You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整Matplotlib多子图尺寸并添加全局主标题?

解决Matplotlib子图尺寸调整与全局主标题显示问题

一、调整子图尺寸

你之前用plt.subplot()的方式难以灵活控制整体画布比例,建议改用plt.subplots()创建画布与子图,通过figsize参数指定整体宽高,匹配目标样式的尺寸比例。

二、添加全局主标题

直接调用plt.title()无法显示全局标题,需要使用plt.suptitle()(或fig.suptitle()),还可通过y参数调整标题位置,避免被子图标题遮挡。

修改后的完整代码

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 5, 11)
y = x ** 2

# 创建画布与子图,设置整体尺寸
fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(12, 4))

# 第一个子图
axes[0].plot(y, label='x**2')
axes[0].plot(x ** 3, label='x**3')
axes[0].set_title('default axes ranges')
axes[0].legend(loc=2)
axes[0].set_ylim(0,120)
axes[0].set_xlim(0,5)

# 第二个子图
axes[1].plot(y, label='x**2')
axes[1].plot(x ** 3, label='x**3')
axes[1].set_title('tight axes')
axes[1].legend(loc=2)
axes[1].set_ylim(0,120)
axes[1].set_xlim(0,5)

# 第三个子图
axes[2].plot(y, label='x**2')
axes[2].plot(x ** 3, label='x**3')
axes[2].set_title('custom axes range')
axes[2].legend(loc=1)
axes[2].set_ylim(0,60)
axes[2].set_xlim(2.0,5.0)

# 添加全局主标题,调整位置避免遮挡
plt.suptitle('multiple plots', y=1.05, fontsize=14)

# 自动调整子图间距,避免元素重叠
plt.tight_layout()

plt.show()

关键说明

  • figsize=(12,4):控制画布的宽度和高度,可根据目标样式微调数值,比如增大高度可改为figsize=(12,5)。
  • plt.suptitle():专门用于添加全局标题,y=1.05让标题向上偏移,避免被子图标题遮挡。
  • plt.tight_layout():自动调整子图间的间距,保证标题、图例等元素不重叠。
  • 改用axes[i].set_xxx()的方式设置子图属性(如set_title、set_xlim),是Matplotlib面向对象的规范写法,逻辑更清晰。

内容的提问来源于stack exchange,提问作者Zaku

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 14:17:46