gpt4 book ai didi

python - matplotlib savefig - 文本被截断

转载 作者:太空宇宙 更新时间:2023-11-03 12:16:59 24 4
gpt4 key购买 nike

假设我创建了一个情节:

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)时,绘图显示正常。然而,当我查看保存的图像时,它是这样呈现的:

enter image description here

如您所见,文本被截断了。 处理此问题的建议做法是什么?

我通过增加图形大小并随后重新调整大小来绕过它。但是,我的目标是生成一组文本大小一致的图像(图形大小各不相同);所以这种方法并不理想。

注意虽然a similar question存在,这个问题的独特之处在于:

  • 同时处理 xlabelylabel
  • 结合set_size_inches函数
  • 努力确保文本大小与不同的图形大小一致。
  • 试图找出 Ipython 输出不同的原因来自 savefig

最佳答案

Spyder 中的 Ipython 控制台使用 inline 后端,它将图形保存为 png 并显示输出图像。保存时,它使用选项 bbox_inches = "tight"

因此,为了获得与控制台中显示的相同图形,您也可以决定使用此选项 - 它主要是扩展或缩小边界框,以便显示 Canvas 中的所有对象。

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

或者,您可以在保存或显示图形之前确保所有对象都已在图形边界内。这可以使用

来完成
plt.tight_layout()

它会尝试自动执行此操作,或者您可以使用

plt.subplots_adjust(left=0.3, right=0.9, bottom=0.3, top=0.9)

其中参数表示每边的边距,以图形大小的分数为单位(左边 30% 的空间,右边 10% 的空间,等等)。

关于python - matplotlib savefig - 文本被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45239261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com