matplotlib有两种绘图方式,一种是基于脚本的方式,另一种是面向对象的方式
面向脚本的方式类似于matlab,面向对象的方式使用起来更为简便
创建子图的方式也很简单
fig,ax = plt.subplots(2,2)
如上面这句就是创建一个2×2的子图
可以在idle里查看它返回的是什么,第一个值是一个图像对象,第二个值是一个2×2的AxesSubplot对象
因此可以使用迭代的方式访问这些子图对象,直接上代码吧
import numpy as np import matplotlib.pyplot as plt x=np.linspace(-2*np.pi,2*np.pi,500) y1=np.sin(x) y2=np.cos(x) y3=np.exp(x) y4=x**2 y_list=np.vstack((y1,y2,y3,y4)) f_name=['sin(x)','cos(x)',r'$e^x$',r'$x^2$'] fig,ax = plt.subplots(2,2) for i in range(2): for j in range(2): y=y_list[i*2+j] ax[i][j].scatter(x,y,s=5) ax[i][j].set_title(f_name[i*2+j]) ## ax[i][j].set_frame_on(False)#去掉外边框 ## ax[i][j].axes.get_xaxis().set_visible(False)#去掉x轴的标签 ## ax[i][j].axes.get_yaxis().set_visible(False)#去掉y轴的标签 plt.show()
运行结果如下