Plt.show显示完整图形,但savefig裁剪图像


82

我的代码成功地将图像保存到文件,但是它从右侧裁剪了重要的细节。存在解决此问题的答案plt.show,但是savefig在此示例中,该命令错误地生成了图形。如何解决?

我的代码的相关示例:

import glob
import os
for file in glob.glob("*.oax"):
    try:
        spc_file = open(file, 'r').read()
        newName = file[6:8] + '-' + file[4:6] + '-' + file[0:4] + ' ' + file[8:12] +  ' UTC (Observed) - No Sea Breeze Day'
        plt.title(newName, fontsize=12, loc='left')
        plt.savefig('X:/' + newName + '.png')        
        plt.show()
    except Exception:
        pass

图像(顶部plt.show和底部是从产生的文件savefig

显示为plt.show时的图像 保存到文件时的图像



您能否举一个简单的示例供他人测试,而不必下载额外的数据和软件包?
那不勒斯

1
@那不勒斯 这超出了我的技能范围。下面提供的答案表明,有一个针对该问题的通用解决方案,与数据无关。
乔斯·柯克

@Neopolitan我不知道问题是如何产生的,所以我不确定如何生成可以复制它的简单数据。
乔斯·柯克

Answers:


156

你可以试试

plt.savefig('X:/' + newName + '.png', bbox_inches='tight')

或者您可以定义图形大小,例如

fig = plt.figure(figsize=(9, 11))
...
plt.savefig(filename, bbox_inches = 'tight')

感谢您的回答,我明天将实施它,并告诉您它的进展!
乔斯·柯克

3
我实现了第一个答案,它起作用了!谢谢!
乔斯·柯克

1
这必须是默认选项bbox_inches ='tight'。我将它与高dpi值结合使用,效果很好。
Deepak V
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.