📅  最后修改于: 2023-12-03 14:52:26.709000             🧑  作者: Mango
在 Matplotlib 中,我们可以使用 subplot()
函数来创建多个子图。但是,默认情况下,所有的子图大小都是相同的。如果我们想创建不同大小的子图,该怎么办呢?本文将介绍如何在 Matplotlib 中创建不同大小的子图。
首先我们来看一个简单的子图例子,由 2 行 2 列组成的 4 张子图:
import matplotlib.pyplot as plt
x = [1,2,3,4]
y1 = [4,3,2,1]
y2 = [1,2,3,4]
y3 = [2,4,1,3]
y4 = [3,1,4,2]
plt.subplot(2, 2, 1)
plt.plot(x, y1)
plt.subplot(2, 2, 2)
plt.plot(x, y2)
plt.subplot(2, 2, 3)
plt.plot(x, y3)
plt.subplot(2, 2, 4)
plt.plot(x, y4)
plt.show()
输出结果如下:
可以看出,每个子图的大小都是相同的。
gridspec
创建不同大小的子图要在 Matplotlib 中创建不同大小的子图,我们需要使用 gridspec
模块。gridspec
模块提供了更多的灵活性来创建不同大小的子图。
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
x = [1,2,3,4]
y1 = [4,3,2,1]
y2 = [1,2,3,4]
y3 = [2,4,1,3]
y4 = [3,1,4,2]
gs = gridspec.GridSpec(2, 2, height_ratios=[1, 2], width_ratios=[2, 1])
ax1 = plt.subplot(gs[0])
ax1.plot(x, y1)
ax2 = plt.subplot(gs[1])
ax2.plot(x, y2)
ax3 = plt.subplot(gs[2])
ax3.plot(x, y3)
ax4 = plt.subplot(gs[3])
ax4.plot(x, y4)
plt.show()
使用 gridspec
模块创建子图时,需要使用 GridSpec()
函数来指定子图的行数、列数、高度比例和宽度比例等参数。在上例中,我们创建了一个 2 行 2 列的网格布局,其中第一行的高度比例为 1,第二行的高度比例为 2,第一列的宽度比例为 2,第二列的宽度比例为 1。
然后,我们通过 subplot()
函数来创建子图。在这里,我们传入的是 gridspec
对象的索引来指定每个子图所在的位置。
输出结果如下:
可以看出,每个子图的大小都是不同的,因为我们在 GridSpec()
函数中指定了不同的高度比例和宽度比例。
通过本文的介绍,我们学习了如何在 Matplotlib 中创建不同大小的子图。可以使用 gridspec
模块来实现。通过指定子图的行数、列数、高度比例和宽度比例等参数,可以灵活地创建不同大小的子图。