【发布时间】:2021-11-21 09:03:24
【问题描述】:
有什么方法可以使用直接来自字典的数据使用matplotlib 绘制条形图?
我的字典是这样的:
D = {u'Label1':26, u'Label2': 17, u'Label3':30}
我期待
fig = plt.figure(figsize=(5.5,3),dpi=300)
ax = fig.add_subplot(111)
bar = ax.bar(D,range(1,len(D)+1,1),0.5)
工作,但它没有。
这是错误:
>>> ax.bar(D,range(1,len(D)+1,1),0.5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/matplotlib/axes.py", line 4904, in bar
self.add_patch(r)
File "/usr/local/lib/python2.7/site-packages/matplotlib/axes.py", line 1570, in add_patch
self._update_patch_limits(p)
File "/usr/local/lib/python2.7/site-packages/matplotlib/axes.py", line 1588, in _update_patch_limits
xys = patch.get_patch_transform().transform(vertices)
File "/usr/local/lib/python2.7/site-packages/matplotlib/patches.py", line 580, in get_patch_transform
self._update_patch_transform()
File "/usr/local/lib/python2.7/site-packages/matplotlib/patches.py", line 576, in _update_patch_transform
bbox = transforms.Bbox.from_bounds(x, y, width, height)
File "/usr/local/lib/python2.7/site-packages/matplotlib/transforms.py", line 786, in from_bounds
return Bbox.from_extents(x0, y0, x0 + width, y0 + height)
TypeError: coercing to Unicode: need string or buffer, float found
【问题讨论】:
-
你能具体分享什么不起作用吗?你有例外吗?什么例外?尽可能多地分享信息。
-
@InbarRose 抱歉,我已经用它显示的错误更新了这个问题......关于字符串或缓冲区的一些东西......我不明白这个错误消息。
-
不清楚你想要实现什么,但在
ax.bar(D,range(1,len(D)+1,1),0.5)中,第一个参数应该是一个数字列表,在你的情况下是D.values()。 -
单行是不可能的,至少据我所知。
-
您可能需要为此向 github 站点提交功能请求,因为它看起来确实很有用。
标签: python matplotlib plot