如何调整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
相关产品推荐
相关产品推荐

