从 ipython 笔记本保存绘图会生成剪切图像



我正在使用 ipython 笔记本绘制一个带有 2 个 ylabel 的图,在笔记本内可视化时图像看起来不错。

这是我的做法:

import matplotlib.pyplot as plt 
fig, ax1 = plt.subplots()
plt.title('TITLE')
plt.xlabel('X')
plt.plot(x, y1, '-', color='blue', label='SNR')
ax1.set_ylabel('y1', color='blue')
for tl in ax1.get_yticklabels():
    tl.set_color('blue')
ax2 = ax1.twinx()
plt.plot(x, y2, '--', color='red', label='Ngal')
ax2.set_ylabel('y2', color='red')
for tl in ax2.get_yticklabels():
    tl.set_color('red')

问题是当我尝试使用命令保存它时

plt.savefig('output.png', dpi=300)

因为输出将是右侧剪切的图像:基本上,如果正确的数字很大,我看不到正确的 ylabel。

默认情况下,matplotlib 为 x 和 y 轴标签和刻度标签留出的空间很小,因此您需要调整图形以包含更多填充。 幸运的是,这并不容易做到。 在致电 savefig 之前,您可以拨打电话

fig.tight_layout()
plt.savefig('output.png', dpi=300)

或者,您可以将 bbox_inches='tight' 传递给 savefig,这也将调整图形以包含所有 x 和 y 标签

plt.savefig('output.png', dpi=300, bbox_inches='tight')

最新更新