是否有任何方法可以使用直接来自dict的数据,使用matplotlib绘制条形图
我的口述是这样的:
D={u'Label1':26,u'Label2':17,u'Label3':30}
我期待着
fig=plt.figure(figsize=(5.5,3),dpi=300)
ax=图添加_子批次(111)
杆=最大杆(D,范围(1,长度(D)+1,1),0.5)
工作,但它没有
以下是错误:
>&燃气轮机&燃气轮机;最大杆(D,范围(1,长度(D)+1,1),0.5)
回溯(最近一次呼叫最后一次):
文件“<;stdin>;”,第1行,在<;模块>;
文件“/usr/local/lib/python2.7/site packages/matplotlib/axes.py”,第4904行,条形图
自我添加补丁(r)
文件“/usr/local/lib/python2.7/site packages/matplotlib/axes.py”,第1570行,在add_补丁中
自我更新补丁限制(p)
文件“/usr/local/lib/python2.7/site packages/matplotlib/axes.py”,第1588行,位于更新补丁限制中
xys=patch.get_patch_transform().transform(顶点)
文件“/usr/local/lib/python2.7/site packages/matplotlib/patches.py”,第580行,在get\u patch\u转换中
self.\u update\u patch\u transform()
文件“/usr/local/lib/python2.7/site packages/matplotlib/patches.py”,第576行,在更新补丁转换中
bbox=变换.bbox.from_边界(x,y,宽度,高度)
文件“/usr/local/lib/python2.7/site packages/matplotlib/transforms.py”,第786行,在from_边界中
返回Bbox.from_区段(x0,y0,x0+宽度,y0+高度)
TypeError:强制使用Unicode:需要字符串或缓冲区,找到浮点
通过首先绘制条形图,然后设置适当的刻度,可以在两行中完成此操作:
将matplotlib.pyplot导入为plt
D={u'Label1':26,u'Label2':17,u'Label3':30}
plt.bar(范围(len(D)),列表(D.values()),align='center')
plt.xticks(范围(len(D)),列表(D.keys())
##对于python 2.x:
#plt.bar(范围(len(D)),D.values(),align='center')#python 2.x
#Python2.x中的plt.xticks(range(len(D)),D.keys())#
plt.show()
请注意,python3中倒数第二行应该是plt.xticks(range(len(D)),list(D.keys()),因为D.keys()返回一个生成器,matplotlib不能直接使用它