1. Matplotlib基础--多个子图表
1.1 简介
Matplotlib是一个Python 2D绘图库,它以各种硬拷贝格式和跨平台交互式环境生成出版质量级别的图形。Matplotlib可以用于Python脚本、Python和IPython Shell、Jupyter Notebook、Web应用程序服务器等。Matplotlib支持Unicode、线型、点型、标签、坐标轴和文本旋转等python官方文档中提到的所有字符串,具有较高的灵活性。
在Matplotlib中,我们可以根据需要创建多个子图表,将不同的数据进行比较或并排展示,达到视觉效果的最大化。
1.2 创建多个子图表
Matplotlib的子图表是通过figure函数创建的。一个Figure对象可以包含多个子图表(Axes对象),可以通过subplot函数或gridspec函数创建。
1.3 使用subplot函数创建子图表
subplot函数用于指定子图表的位置。在subplot函数中,我们需要指定子图表的行数、列数和子图表的序号(从左至右,从上至下逐一编号)。
例如,以下代码创建一个包含4个子图表的Figure对象,并将它们分别放在不同的位置中:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y1 = [1, 4, 9, 16]
y2 = [1, 2, 3, 4]
plt.figure()
plt.subplot(2, 2, 1)
plt.plot(x, y1)
plt.title('subplot 1')
plt.subplot(2, 2, 2)
plt.plot(x, y2)
plt.title('subplot 2')
plt.subplot(2, 2, 3)
plt.plot(x, y1[::-1])
plt.title('subplot 3')
plt.subplot(2, 2, 4)
plt.plot(x, y2[::-1])
plt.title('subplot 4')
plt.show()
plt.figure()用于创建一个Figure对象,plt.subplot(2, 2, 1)用于在Figure对象中创建一个子图表,并指定其位置为第1个(从左至右,从上至下逐一编号)。在这个例子中,我们创建了4个子图表,分别使用subplot函数将它们放置在Figure对象的不同位置中。plt.plot函数用于在子图表上作图,plt.title函数用于添加子图表的标题。plt.show()用于显示Figure对象。
执行上述代码,我们将得到以下图像:
![subplot函数创建一个包含4个子图表的Figure对象](https://doc.shiyanlou.com/document-uid440617labid8432timestamp1542818159628.png)
可以看到,Figure对象被分成了2行2列(即共4个)子图表,每个子图表都包含一个折线图。
1.4 使用gridspec函数创建子图表
gridspec函数更加灵活,可以通过指定每个子图表的位置和大小来灵活地组合出复杂的图形。
例如,以下代码创建了包含4个子图表的Figure对象并调整子图表的位置和大小:
import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y1 = [1, 4, 9, 16]
y2 = [1, 2, 3, 4]
plt.figure()
gs = gridspec.GridSpec(2, 2) # 创建2x2栅格
ax1 = plt.subplot(gs[0, :]) # 第一行,包括所有列
plt.plot(x, y1)
plt.title('subplot 1')
ax2 = plt.subplot(gs[1, :-1]) # 第二行,第1列
plt.plot(x, y2)
plt.title('subplot 2')
ax3 = plt.subplot(gs[1:, -1]) # 第二行,第2列
plt.plot(x, y1[::-1])
plt.title('subplot 3')
ax4 = plt.subplot(gs[:, -1]) # 所有行,第2列
plt.plot(x, y2[::-1])
plt.title('subplot 4')
gs.update(wspace=0.5, hspace=0.5) # 调整子图之间的间距
plt.show()
执行上述代码,我们将得到以下图像:
![gridspec函数创建一个包含4个子图表的Figure对象](https://doc.shiyanlou.com/document-uid440617labid8432timestamp1542818159652.png)
可以看到,使用gridspec函数的输出可定制程度更高,灵活性更强。
1.5 总结
本文介绍了如何使用Matplotlib创建多个子图表。具体来说,我们讨论了如何使用subplot函数和gridspec函数创建子图表,并且给出了相应的例子。
Matplotlib的子图表功能不仅可以帮助我们比较和展示不同的数据,而且可以为我们的图像带来充足的美观度和视觉效果,帮助读者更好地理解和解释数据。