2016-08-18 75 views
1

我使用matplotlib.pyplot绘制带有图例的条形图,plt.savefig()保存的图与plt.show()相比不完整。更确切地说,这个图例不在图中,jpg文件只有图例的左边一半。如何在matplotlib.pyplot中显示savefig?

我的代码:

from matplotlib import pyplot as plt 
fig = plt.figure(figsize=(12,6)) 
plt.bar(x, y, label="a") 
plt.legend(bbox_to_anchor=(1.02, 1), loc="upper left") 
plt.show() 
fig.savefig("a.jpeg") 

我通过这个答案Matplotlib savefig with a legend outside the plot但所选择的答案看起来建议手动调节轴。我有很多不同的数字,因此可能不合适。自从它在多年前发布以来,我不知道是否可以使用任何自动方法使plt.savefig()的效果为plt.show()?我在plt.savefig()找不到任何适当的论点。

谢谢!

+1

是否加入'bbox_inches ='tight''到savefig解决这个问题? –

+0

谢谢!这种帮助。但我不太了解关于'bbox_inches'的文档中的评论。这是为了什么? –

+0

它的意思是简单地删除空白,尽管我发现它解决了标签文本被切断的'savefig'问题。一个更好的解决方案可能是'tight_layout',请参阅http://stackoverflow.com/questions/6774086/why-is-my-xlabel-cut-off-in-my-matplotlib-plot,但似乎很奇怪,你应该需要在某些情况下。 –

回答

2

希望这将解决problem.Add bbox_inches='tight'在PARAMS这有助于消除空格

fig.savefig('a.jpeg', bbox_inches='tight', pad_inches=0) 
相关问题