我正在使用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。
答案 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')