MatplotLib库是Python中最常用的第三方绘图库,他的API设计大部分模仿自matlab。因此matplotlib与matlab的使用十分相像。
以下程序段在各种环境下均可运行,但推荐在spyder下运行。
- 一维、二维数据的绘图与保存
import matplotlib.pyplot as plt
plt.plot([3,2,1,4,5])
plt.ylabel("grade")
plt.savefig("test",dpi=200) # dpi(Dots Per Inch,每英寸点数,代表图形质量)
plt.show() # 在IPython环境下展示图像
对于一维数据,默认列表值为纵坐标,而列表的索引为横坐标。绘图结果如下

如果要在matlab中实现上述绘图,应写代码如下,可将两者进行对比。
a=[3,2,1,5,4];
plot(a);
以下是一个二维数据绘图的小例:
import matplotlib.pyplot as plt
plt.plot([0,2,4,6,8],[3,2,1,4,5])
plt.ylabel("grade")
plt.axis([-1,10,0,6])
plt.savefig("test",dpi=200) # dpi(Dots Per Inch,每英寸点数,代表图形质量)
plt.show() # 在IPython环境下展示图像
- 绘图区域分割
import numpy as np
import matplotlib.pyplot as plt
def f(t):
return np.exp(-t)*np.cos(2*np.pi*t)
a=np.arange(0,5,0.02)
b=f(a)
plt.subplot(2,1,1) # 也可以简写为plt.subplot(212)
plt.plot(a,b)
plt.subplot(2,1,2)
plt.plot(a,np.cos(2*np.pi*a),'r--')
plt.show()
- plot函数的format_string
颜色字符
风格字符
标记字符
format string 由颜色字符+风格字符+标记字符组合而成
在绘图时,为了区分不同的曲线,往往不仅需要不同的颜色,也需要不同的风格字符,这是因为在打印机上打印的时候线条往往是黑白的。下面是一个实例
import numpy as np
import matplotlib.pyplot as plt
a=np.arange(0,5,0.2)
plt.plot(a,a*1.5,'go-',a,a*2.5,'bx',a,a*3.5,'r-.')
plt.show()
- pyplot的中文显示
在pyplot绘图中,并不能直接显示中文,为了显示中文,需要使用一些额外的参数,请看如下程序段:
import numpy as np
import matplotlib.pyplot as plt
a=np.arange(0,5,0.2)
plt.plot(a,a*1.5,'go-',a,a*2.5,'go',a,a*3.5,'r-.')
plt.xlabel('横轴',fontproperties='SimHei',fontsize=20)
plt.show()
在设置xlabel时,需要额外增加fontproperties='SimHei’这一参数,意思是使用黑体。python中的中文字体分别叫如下名称:
- pyplot中的文本显示函数
import numpy as np
import matplotlib.pyplot as plt
a=np.arange(0,5,0.02)
plt.plot(a,np.cos(2*np.pi*a),'r-')
plt.xlabel('横轴',fontproperties='Kaiti',fontsize=20,color='red')
plt.ylabel('纵轴',fontproperties='Kaiti',fontsize=20)
plt.title('示例函数$y=cos(2\pi x)$',fontproperties='SimHei',fontsize=20)
plt.text(2,1,'$\Omega =2\pi $',fontsize=12)
plt.axis([-1,6,-2,2])
plt.grid(True) # t要大写
plt.show()
- 子绘图区域的分割
利用subplot函数可以对绘图区域进行一些简单的分割,但是对于一些更复杂的情况则无能为力,例如如下区域分割,只利用subplot函数则难以完成:
此时可以以下函数进行区域分割
plt.subplot2grid((3,3),(1,0),colspan=1)
这段代码选中了图中的黄色区域。参数(3,3)表示把整个区域分成的基本方格;(1,0)表示选中第1行第0列的小方格,也就是黄框的左半部分;cospan=2表示列方向的长度扩展为2。