如何保存带Y轴标题与刻度且绘图框水平居中的Matplotlib图形?
解决绘图框水平居中且保留Y轴元素的问题
默认plt.savefig会根据图形元素自动分配边距,Y轴标题会占用左侧额外空间,导致保存的图片左右边距不均。以下两种方法可实现绘图框水平居中,同时保留Y轴标题和刻度:
方法1:手动设置对称边距
通过plt.subplots_adjust直接指定左右边距数值,确保绘图框到图片边缘的距离完全相等:
import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 2 * np.pi, 100) y = np.sin(x) plt.plot(x, y) plt.ylabel('Y-axis') # 左右边距设为相同值,可根据Y轴标题长度微调 plt.subplots_adjust(left=0.15, right=0.15) plt.savefig('/tmp/test.png')
方法2:自动布局配合固定尺寸
先用tight_layout适配元素避免截断,再固定图形宽高比保证居中效果:
import numpy as np import matplotlib.pyplot as plt x = np.linspace(0, 2 * np.pi, 100) y = np.sin(x) plt.plot(x, y) plt.ylabel('Y-axis') # 自动调整元素间距,pad控制整体边距大小 plt.tight_layout(pad=2) # 设置固定图形尺寸,确保左右边距对称 plt.gcf().set_size_inches(6, 4) plt.savefig('/tmp/test.png')
补充说明
- 方法1的
left/right参数可根据Y轴标题长度灵活调整; - 方法2的
set_size_inches可按需修改图片整体尺寸,适配不同场景需求。
内容的提问来源于stack exchange,提问作者David Davó
相关产品推荐
相关产品推荐

