【发布时间】:2017-07-21 13:42:56
【问题描述】:
假设我创建了一个情节:
import matplotlib.pyplot as plt
plt.clf()
import numpy as np
props = np.random.randint(0,100,(200,))
x=np.arange(1,201,1)
plt.plot(x,props,c='k')
plt.xlabel('blah blah blah blah blah blah\n blah blah blah blah blah')
plt.ylabel('blah blah blah blah blah blah blah blah blah')
fig=plt.gcf()
fig.set_size_inches(3.75,3.75)#14, 23)
plt.savefig('testfig.png',dpi=300)
使用 Ipython(通过 Spyder)时,情节显示正常。但是,当我查看保存的图像时,它呈现如下:
如您所见,文本被截断。 处理此问题的推荐做法是什么?
我通过增加图形大小来解决它,然后重新调整大小。但是,我的目标是生成一组文本大小一致的图像(图形大小不同);所以这种方法并不理想。
注意。虽然a similar question 存在,但这个问题的不同之处在于:
- 同时处理
xlabel和ylabel。 - 结合
set_size_inchesfunction - 力求确保文字大小与不同的图形大小保持一致。
- 试图找出 Ipython 输出不同的原因 来自savefig
【问题讨论】:
-
您在 savefig 之前尝试过:
plt.tight_layout()(右)吗? docs -
我认为@tom 是正确的,这是重复的;虽然使用
bbox_inches = "tight"的解决方案在这里特别有趣,将结果与 IPython 内联输出进行比较,但在提出重复问题时可能不可用。 -
@ImportanceOfBeingErnest 同意。可能还有其他更新的重复目标也可以链接到;这是一个非常常见的问题。
-
@ImportanceOfBeingErnest 和 tom:很公平,我期待搜索结果,或者当我输入问题时 - 可能有什么结果但我错过了。然而,我认为它仍然值得保留,因为它可能对未来的搜索者有用。
标签: python matplotlib