📅  最后修改于: 2023-12-03 15:17:35.366000             🧑  作者: Mango
在 matplotlib 中,可以使用 subplot() 函数创建多个子图。在一些情况下,可能需要在子图之间添加一些空格来让图形看起来更美观。
可以使用 subplots_adjust() 函数来控制子图之间的空隙。通过设置 left、right、bottom 和 top 参数可以控制子图的位置,通过设置 wspace 和 hspace 参数可以控制子图之间的水平和垂直间距。
下面是一个简单的例子:
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=2, ncols=2)
fig.subplots_adjust(wspace=0.5, hspace=0.3)
axes[0, 0].plot([1, 2, 3], [4, 5, 6])
axes[0, 0].set_title('Subplot 1')
axes[0, 1].plot([1, 2, 3], [4, 5, 6])
axes[0, 1].set_title('Subplot 2')
axes[1, 0].plot([1, 2, 3], [4, 5, 6])
axes[1, 0].set_title('Subplot 3')
axes[1, 1].plot([1, 2, 3], [4, 5, 6])
axes[1, 1].set_title('Subplot 4')
plt.show()
该代码创建了一个 2x2 的子图布局。使用 subplots_adjust() 函数设置水平间距为 0.5,垂直间距为 0.3。
另一种控制子图布局的方法是使用 GridSpec。这个方法需要先创建一个 GridSpec 对象,然后使用它的子对象来创建子图。
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
fig = plt.figure(figsize=(10, 10))
gs = GridSpec(3, 3, figure=fig)
ax1 = fig.add_subplot(gs[0, :])
ax1.plot([1, 2, 3], [4, 5, 6])
ax1.set_title('Subplot 1')
ax2 = fig.add_subplot(gs[1, :2])
ax2.plot([1, 2, 3], [4, 5, 6])
ax2.set_title('Subplot 2')
ax3 = fig.add_subplot(gs[1:, 2])
ax3.plot([1, 2, 3], [4, 5, 6])
ax3.set_title('Subplot 3')
ax4 = fig.add_subplot(gs[-1, 0])
ax4.plot([1, 2, 3], [4, 5, 6])
ax4.set_title('Subplot 4')
ax5 = fig.add_subplot(gs[-1, -2])
ax5.plot([1, 2, 3], [4, 5, 6])
ax5.set_title('Subplot 5')
plt.show()
该代码使用 GridSpec 创建了一个 3x3 的子图布局,并设置了每个子图的位置。可以看到,该方法比使用 subplots_adjust() 更加灵活,因为可以创建任意形状和大小的子图。