网站菜单怎么做,有自己的域名怎么建设网站,南宁建站平台,苏州保洁公司招聘信息matplotlib是python最著名的绘图库#xff0c;它提供了一整套和matlab相似的命令API#xff0c;十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件#xff0c;嵌入GUI应用程序中。它的文档相当完备#xff0c;并且Gallery页面中有上百幅缩略图#xff0c;打开之…matplotlib是python最著名的绘图库它提供了一整套和matlab相似的命令API十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件嵌入GUI应用程序中。它的文档相当完备并且Gallery页面中有上百幅缩略图打开之后都有源程序。因此如果你需要绘制某种类型的图只需要在这个页面中浏览/复制/粘贴一下基本上都能搞定。
-----引用自http://hyry.dip.jp/pydoc/matplotlib_intro.html
这篇我们用matplotlib从构造最简单的bar一步一步向复杂的bar前行。什么是最简单的bar看如下语句你就知道她有多么简单了
importmatplotlib.pyplot
as plt
plt.bar(left0,height1)
plt.show()
执行效果是的三句话就可以了是我见过最简单的绘图语句。首先我们import了matplotlib.pyplot 然后直接调用其bar方法最后用show显示图像。我解释一下bar中的两个参数
left柱形的左边缘的位置如果我们指定1那么当前柱形的左边缘的x值就是1.0了
height这是柱形的高度也就是Y轴的值了
leftheight除了可以使用单独的值此时是一个柱形也可以使用元组来替换此时代表多个矩形。例如下面的例子
importmatplotlib.pyplot
as plt
plt.bar(left(0,1),height(1,0.5))
plt.show()可以看到 left (0,1)的意思就是总共有两个矩形第一个的左边缘为0第二个的左边缘为1。height参数同理。
当然可能你还觉得这两个矩形“太胖”了。此时我们可以通过指定bar的width参数来设置它们的宽度。
importmatplotlib.pyplot
as plt
plt.bar(left(0,1),height(1,0.5),width0.35)
plt.show()此时又来需求了我需要标明xy轴的说明。比如x轴是性别y轴是人数。实现也很简单看代码
importmatplotlib.pyplot
as plt
plt.xlabel(u性别)
plt.ylabel(u人数)
plt.bar(left(0,1),height(1,0.5),width0.35)
plt.show()注意这里的中文一定要用u3.0以上好像不用我用的2.7因为matplotlib只支持unicode。接下来让我们在x轴上的每个bar进行说明。比如第一个是“男”第二个是“女”。
importmatplotlib.pyplot
as plt
plt.xlabel(u性别)
plt.ylabel(u人数)
plt.xticks((0,1),(u男,u女))
plt.bar(left(0,1),height(1,0.5),width0.35)
plt.show()plt.xticks的用法和我们前面说到的left,height的用法差不多。如果你有几个bar那么就是几维的元组。第一个是文字的位置第二个是具体的文字说明。不过这里有个问题很显然我们指定的位置有些“偏移”最理想的状态应该在每个矩形的中间。你可以更改(0,1)( (00.35)/2 ,(10.35)/2 )不过这样比较麻烦。我们可以通过直接指定bar方法里面的aligncenter就可以让文字居中了。
importmatplotlib.pyplot
as plt
plt.xlabel(u性别)
plt.ylabel(u人数)
plt.xticks((0,1),(u男,u女))
plt.bar(left(0,1),height(1,0.5),width0.35,aligncenter)
plt.show()接下来我们还可以给图标加入标题。
plt.title(u性别比例分析)当然还有图例也少不掉:
importmatplotlib.pyplot
as plt
plt.xlabel(u性别)
plt.ylabel(u人数)
plt.title(u性别比例分析)
plt.xticks((0,1),(u男,u女))
rectplt.bar(left(0,1),height(1,0.5),width0.35,aligncenter)
plt.legend((rect,),(u图例,))
plt.show()注意这里的legend方法里面的参数必须是元组。即使你只有一个图例不然显示不正确。
接下来我们还可以在每个矩形的上面标注它具体点Y值。这里我们需要用到一个通用的方法
defautolabel(rects):
forrectinrects:
heightrect.get_height()
plt.text(rect.get_x()rect.get_width()/2.,1.03*height,%s%float(height))
其中plt.text的参数分别是x坐标y坐标要显示的文字。所以调用代码如下
importmatplotlib.pyplot
as plt defautolabel(rects):
forrectinrects:
heightrect.get_height()
plt.text(rect.get_x()rect.get_width()/2.,1.03*height,%s%float(height))
plt.xlabel(u性别)
plt.ylabel(u人数)
plt.title(u性别比例分析)
plt.xticks((0,1),(u男,u女))
rectplt.bar(left(0,1),height(1,0.5),width0.35,aligncenter)
plt.legend((rect,),(u图例,))
autolabel(rect)
plt.show()到这里这个图形已经基本完备了不过可以看到你一个矩形紧靠这顶部不是很好看。最好能够空出一段距离出来就好了。这个设置我没有找到具体的属性。不过我还是通过一个小技巧来实现了。就是bar属性的yerr参数。一旦设置了这个参数那么对应的矩形上面就会有一个竖着的线我不知道他是干什么的。不过当我把这个值设置的很小的时候上面的空白就自动空出来了。如图
rectplt.bar(left(0,1),height(1,0.5),width0.35,aligncenter,yerr0.000001)对于左右两边能否空出空白来暂时还没有找到xerr参数不行