Matplotlib基础--多个子图表

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的子图表功能不仅可以帮助我们比较和展示不同的数据,而且可以为我们的图像带来充足的美观度和视觉效果,帮助读者更好地理解和解释数据。

后端开发标签