从ipython notebook中保存绘图会产生剪切图像

时间:2015-04-22 16:09:41

标签: python matplotlib ipython ipython-notebook

我正在使用ipython笔记本绘制带有2个ylabels的情节,并且在笔记本内部可视化时图像看起来很好。

我是这样做的:

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。

1 个答案:

答案 0 :(得分:4)

默认情况下,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')