matplotlib是python中用来绘制数据图的扩展包,功能十分强大,可以绘制曲线图、条形图等。下面是一个曲线图的示例。
1 | import numpy as np |
从上面的例子看出,使用Matplotlib画图,先准备数据,定义好全局变量,新建figure(), subplot()
,使用plot,bar,hist
等命令画图后,设置坐标轴、标题、图例等等,最终采用plt.show()
显示图形。下面是一些常用的操作。
自定义全局变量
mpl.rc()提供了修改全局变量的函数,例如mpl.rc('font',size=10)
即将图中所有text属性的文字大小设置为10。可以设置的全局变量如下:
- font
- family
- weight
- size
- axes
- titlesize
- labelsize
- tick
- labelsize, 字体大小
- lines
- color
- lw
- grid
- c , distance
- ls, line style
- lw, line width
- 更多的信息参考官网
文字标注采用latex
figure的title, xlabel, xtick, text, legend等处支持latex,将’some string’改成 r'$some latex$ other string'
即可。
在条形图中标记数据
通过for循环,遍历所有数据点的坐标,并采用plt.text(a, b+0.05, '%.2f' % b, ha='center', va= 'bottom')
来进行数据标注。
subplot的标题显示在图片下方
通常subplot的plt.title('one title',va='bottom', fontsize = 10)
是显示在图片上方的,如果要在图片下方,需指定y坐标,即改为plt.title('one title',va='bottom', y = -0.05, fontsize = 10)
,此处y坐标是百分数,相对于整个图片是5%的距离,可自行调节。
绘制分组条形图
分组条形图是常见的用于比较不同方案效果的图形,假如有2种方案,每种方案有3个数据点,那么绘制的分组条形图如下,
相应的代码见样例。方法即分成2组list,画2次bar_plot,每一次分别指定label的名字,以方便绘制legend(),为了使得每组数据内紧密分布,组间距离较远,需要计算相应的x_pos坐标,也同样分成2个list。
控制线条颜色
颜色color='r'
表示红色线条,这种配色不太好看。可以直接采用CN系列的色标,比如color='C0'
,其中,C0
可以改成C1~C9
,这种颜色用起来方便,也好看一些~
具体介绍参考这里。
参考资料
- Matplotlib教程Gitbook
- Matplotlib的绘图集锦,附代码
- 用于在线新建或调试ipython notebook的平台,binder
- 其他可视化工具,seaborn, bigpicture, hypertools, divvy等
END