plt.savefig 输出图像质量

Tat*_*dik 5 python matplotlib python-3.x

我正在尝试使用 plt.savefig 将绘图保存到文件中,但是我对输出的图片质量不满意。更改 dpi 选项无济于事。

plt.savefig('filename.png', dpi=1200, format='png', bbox_inches='tight')
Run Code Online (Sandbox Code Playgroud)

我尝试保存到 'svg' 和 'eps' - 没有区别。我想知道问题是否出在其他方面,比如某个库或操作系统的版本或类似的东西。看起来问题也不在于分辨率,而在于绘制线条和符号的方式 - 太粗了。

plt.show()显示出明显更好的图片,我可以将它以令人满意的质量保存为 png - 令人惊讶的是文件大小大约小 8 倍(因为压缩,我想,这很好。)

使用savefig()保存的部分图片 在此处输入图片说明

plot.show()保存的图片的同一部分 在此处输入图片说明

Tat*_*dik 3

Figsize选项对我有用。

这个想法是,保存到文件和显示图表的默认参数对于不同的设备是不同的。这就是为什么我的案例中的代表性有所不同。可以手动调整设置(正如 Piotrek 所建议的那样),但对我来说,仅仅增加图形大小就足够了 - 此设置是共享的,并允许 python 自动调整可视化。

更多详细信息请参见Piotrek 提到的页面,由 doug 和 Karmel 回答。

我有几个子图,所以我这样使用它:

fig, ax = plt.subplots(nrows=4, ncols=1, figsize=(20, 10))
Run Code Online (Sandbox Code Playgroud)

对于一个情节案例命令如下:

plt.figure(figsize=(20,10))
Run Code Online (Sandbox Code Playgroud)

PS Figsize 参数的单位是英寸,而不是像素。