Matplotlib 提供了几种方法为包含多个子图的图形添加一个总标题。这增强了可读性,并为可视化提供了重要的上下文。本文探讨了两种主要方法,并重点介绍了它们的异同。
目录
使用 pyplot.suptitle()
pyplot.suptitle()
函数提供了一种简洁的添加主标题的方法。它是 matplotlib.pyplot
模块(通常导入为 plt
)的一部分。此方法简单直接且广泛使用。
import matplotlib.pyplot as plt
# 样本数据
x = [1, 2, 3, 4, 5]
y1 = [2, 4, 1, 3, 5]
y2 = [1, 3, 5, 2, 4]
# 创建子图
fig, axes = plt.subplots(2, 1)
# 绘制数据
axes[0].plot(x, y1)
axes[0].set_title('子图 1')
axes[1].plot(x, y2)
axes[1].set_title('子图 2')
# 添加主标题
plt.suptitle('主图形标题', fontsize=14)
# 调整布局(防止重叠至关重要)
plt.tight_layout(rect=[0, 0.03, 1, 0.95])
plt.show()
plt.tight_layout()
函数至关重要。它会自动调整子图参数以防止标题重叠。rect
参数微调布局;您可能需要根据标题长度和子图数量调整其值。
使用 figure.suptitle()
或者,可以通过图形对象本身访问 figure.suptitle()
方法,该方法提供等效的功能。这种方法符合面向对象的编程风格。
import matplotlib.pyplot as plt
# 样本数据(与上面相同)
x = [1, 2, 3, 4, 5]
y1 = [2, 4, 1, 3, 5]
y2 = [1, 3, 5, 2, 4]
# 创建子图
fig, axes = plt.subplots(2, 1)
# 绘制数据
axes[0].plot(x, y1)
axes[0].set_title('子图 1')
axes[1].plot(x, y2)
axes[1].set_title('子图 2')
# 使用图形对象添加主标题
fig.suptitle('主图形标题(面向对象)', fontsize=14)
# 调整布局
plt.tight_layout(rect=[0, 0.03, 1, 0.95])
plt.show()
这段代码与前面的示例类似,演示了这两种方法的可互换性。
选择合适的方法
两种方法都能达到相同的结果。选择通常取决于个人喜好或编码风格。pyplot.suptitle()
更简洁,而 figure.suptitle()
更符合严格的面向对象方法。项目内部的一致性是关键。请记住始终使用 plt.tight_layout()
或手动调整子图参数以确保图形清晰易读。