一、前言
matplotlib
是python
最著名的绘图库,它提供了一整套和matlab
相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。
它的文档相当完备,并且 Gallery页面中有上百幅缩略图,打开之后都有源程序。因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。
在Linux下比较著名的数据图工具还有gnuplot
,这个是免费的,Python
有一个包可以调用gnuplot
,但是语法比较不习惯,而且画图质量不高。
而 Matplotlib
则比较强:Matlab
的语法、python
语言、latex
的画图质量(还可以使用内嵌的latex
引擎绘制的数学公式)。
二、 matplotlib 应用
matplotlib
中的快速绘图的函数库可以通过如下语句载入:
import matplotlib.pyplot as plt
matplotlib
还提供了名为pylab
的模块,其中包括了许多numpy
和pyplot
中常用的函数,方便用户快速进行计算和绘图,可以用于IPython
中的快速交互式使用。
接下来调用figure
创建一个绘图对象,并且使它成为当前的绘图对象。
plt.figure(figsize=(8,4))
也可以不创建绘图对象直接调用接下来的plot函数直接绘图,matplotlib
会为我们自动创建一个绘图对象。如果需要同时绘制多幅图表的话,可以是给figure
传递一个整数参数指定图标的序号,如果所指定序号的绘图对象已经存在的话,将不创建新的对象,而只是让它成为当前绘图对象。
通过figsize
参数可以指定绘图对象的宽度和高度,单位为英寸;dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80。因此本例中所创建的图表窗口的宽度为8*80 = 640像素。
但是用工具栏中的保存按钮保存下来的png图像的大小是800*400像素。这是因为保存图表用的函数savefig使用不同的DPI配置,savefig函数也有一个dpi参数,如果不设置的话,将使用matplotlib配置文件中的配置,此配置可以通过如下语句进行查看:
import matplotlib
matplotlib.rcParams[savefig.dpi]
下面的两行程序通过调用plot
函数在当前的绘图对象中进行绘图:
plt.plot(years, price, 'b\*')#,label=$cos(x^2)$)
plt.plot(years, price, 'r')
plot
函数的调用方式很灵活,第一句将x,y数组传递给plot之后,用关键字参数指定各种属性:
label
: 给所绘制的曲线一个名字,此名字在图示(legend)中显示。只要在字符串前后添加$符号,matplotlib就会使用