有没有办法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
您可以通过首先绘制条形图然后设置适当的刻度来分两行进行:
import matplotlib.pyplot as plt
D = {u'Label1':26, u'Label2': 17, u'Label3':30}
plt.bar(range(len(D)), list(D.values()), align='center')
plt.xticks(range(len(D)), list(D.keys()))
# # for python 2.x:
# plt.bar(range(len(D)), D.values(), align='center') # python 2.x
# plt.xticks(range(len(D)), D.keys()) # in python 2.x
plt.show()
请注意,倒数第二行应plt.xticks(range(len(D)), list(D.keys()))
在python3中读取,因为它会D.keys()
返回一个生成器,而matplotlib无法直接使用该生成器。
我是数据可视化方面的新手。我正在练习海运,我正在尝试用这个数据帧绘制一个条形图。我希望图表有3条在每个符号上,然而,输出只有1条在每个符号上。我能知道怎么修吗? 数据帧的一部分... 代码如下所示: 输出如下:
numpy.histogram()函数将输入数组和作为两个参数。 bin数组中的连续元素用作每个bin的边界。 Matplotlib 可以将直方图的数字表示转换为图形。 pyplot子模块的plt()函数将包含数据和数组的数组作为参数,并转换为直方图。
问题内容: 使用python的matplotlib绘制3d图形时出现问题。使用以下python函数,我得到了这个图: 在这里,有孔栅格和和的功能和。代表表面颜色。 但是现在我想水平切割该图,仅保留z在-1和2之间的部分。 我想要的,用gnuplot绘制的是这样的: 我尝试了和,但是它们都没有给我想要的数字。有人知道如何使用python吗? 问题答案: 你在那里有漂亮的圆锥形交叉点:) 您要尝试
问题内容: 我已经使用样条插值法来平滑时间序列,并且还想在绘图中添加一条水平线。但是似乎有一个我无法控制的问题。任何帮助都会非常有帮助。这是我所拥有的: 问题似乎与我对水平线图的使用有关。 问题答案: 您是正确的,我认为这使您失望。您将要重用原始的x轴变量,并使用另一个包含变量的相同长度的numpy数组对其进行绘制。 希望可以解决问题!
我使用样条插值来平滑时间序列,还想在图中添加一条水平线。但是似乎有一个问题超出了我的控制范围。任何帮助都会很有帮助。这是我所拥有的: 问题似乎在于我使用进行水平线绘制。
本文向大家介绍python matplotlib库绘制条形图练习题,包括了python matplotlib库绘制条形图练习题的使用技巧和注意事项,需要的朋友参考一下 练习一:假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据? a = ["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:最后的骑士","摔跤吧!