📌  相关文章
📜  matplotlib 在子图之间添加空格 - Python (1)

📅  最后修改于: 2023-12-03 15:17:35.366000             🧑  作者: Mango

Matplotlib 在子图之间添加空格 - Python

在 matplotlib 中,可以使用 subplot() 函数创建多个子图。在一些情况下,可能需要在子图之间添加一些空格来让图形看起来更美观。

方法一:使用 subplots_adjust()

可以使用 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。这个方法需要先创建一个 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() 更加灵活,因为可以创建任意形状和大小的子图。