使用python的matplotlib将字典绘图

目录

  • 字典绘图
    • 获取字典的键与值
    • 绘图

字典绘图

获取字典的键与值

使用dic_name.keys()获得dic_name的所有key构成的列表,返回类型为"dic_keys";同理,使用dic_name.values()获得dic_name的所有value构成的列表,返回类型为“dic_values”
使用python的matplotlib将字典绘图_第1张图片

绘图

虽然在上一个步骤里,分别获得了字典的 键和值的列表,但是获得的返回值类型,并不是list,因此需要用list()进行类型转化,才可进行下一步的绘图(不进行list()转化,则会报错)
若想x轴上的刻度,按自己的想法标注,则需将数字类型的数据,转化为str类型。
话不多说哈(有点疲惫了 ,好吧,犯懒了),直接“数形结合”上代码,代码中解释吧

import matplotlib.pyplot as plt

fig = plt.figure()
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
dict1={
     -1.2545354:2,-1.2315456:3,-2.146456465:5}
dict2={
     '-1.2545354':0,'-1.2315456':3,'-2.146456465':6}
dict3={
     '-1.2545354':1,'-1.2315456':4,'-2.146456465':2}

print(dict1.keys())
x1=list(dict1.keys())
x1=list(map(str,x1))#使用list(map(str,x1))方法,将返回一个列表,列表中所有元素是str类型
#x1=round(x1,2)
print(x1)
y1=list(dict1.values())
x2=list(dict2.keys())
y2=list(dict2.values())
x3=list(dict3.keys())
y3=list(dict3.values())
# print(x)
# print(y)
plt.subplot(211)#切割子图,数字含义是将整个画面切割为21列,当前选用第1个切割块

plt.plot(x1,y1,label='xl1')#label为设置图例标签,需要配合legend()函数才能显示出
plt.plot(x2,y2,label='xl2')
plt.plot(x3,y3,label='xl3')
plt.xticks(rotation=30)#设置x轴上的刻度旋转角度
plt.xlabel('位置')
plt.ylabel('病灶个数')
plt.title('分布图')

plt.legend()#需要配合这个才能显示图例标签
fig.tight_layout(h_pad=2)#设置子图间的间隙,还有参数w_pad等

plt.subplot(212)#切割子图,数字含义是将整个画面切割为21列,当前选用第2个切割块
plt.bar(x1,y1)
plt.xlabel('位置')
plt.ylabel('病灶个数')
plt.title('总体分布图')
plt.show()

结果展示:
使用python的matplotlib将字典绘图_第2张图片
还是要强调一下在使用plt.xlabel(‘位置’)时遇到的坑:plt.xlabel ‘str’ object is not callable 这错误很是迷惑啊,没有语法错误啊,为什么报错呢,因为曾经犯的错:我使用的是jupyter,之前没搞清楚时犯过一个错误,写成了plt.xlabel=‘位置’,害,可谁曾想,这jupyter的kernel还“记仇”呢,于是需要重启一下kernel,将他“记仇”的记忆所清除就OKK啦~
参考了这篇博客才豁然开朗:https://blog.csdn.net/Mr_Cat123/article/details/90971424.

另附上参考过的一些链接:
字典相关操作:
链接: https://www.cnblogs.com/wangshicheng/p/10130918.html.
解决python中中文乱码:
链接: https://blog.csdn.net/sinat_29699167/article/details/80029898.
解决子图重叠:
链接:https://blog.csdn.net/ymznice/article/details/83274600.
链接:https://blog.csdn.net/a776995799/article/details/87282010.

你可能感兴趣的:(python)