【问题标题】:plt.savefig output image qualityplt.savefig 输出图像质量
【发布时间】:2018-09-13 14:30:14
【问题描述】:

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

plt.savefig('filename.png', dpi=1200, format='png', bbox_inches='tight')

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

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

使用savefig()保存的部分图片

plot.show()中保存的图片的同一部分

【问题讨论】:

  • 如果您使用相同的 dpi 进行显示和保存,则输出不应有任何差异。默认 dpi 为 100。使用dpi=100 应该会给您与显示相同的结果。因此,不清楚您所说的 “更改 dpi 选项没有帮助。” 使用 dpi=1200 时的输出是预期的 - 没有问题。
  • 话虽如此,您可能想用dpi=100 的结果更新您的问题,并解释您对此不满意的地方。
  • 问题不在于分辨率,而在于风格:分辨率越高,画面越不悦目。我会更新问题标题,因为它与分辨率无关,真的。我只是不知道在哪里看,现在已经修好了。
  • 你需要把 dpi 想象成一个放大镜,它会让一切变得更大或更小。相比之下,图形大小是绘制元素的画布大小。所以解决方案大概在this answer中给出。
  • 谢谢!是的,这是一个有用的链接。 Figsize 正是我所需要的。

标签: python python-3.x matplotlib


【解决方案1】:

Figsize 选项对我有用。

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

更多详情请参阅提到的page Piotrek,由 doug 和 Karmel 回答。

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

fig, ax = plt.subplots(nrows=4, ncols=1, figsize=(20, 10))

对于一个情节案例命令是这样的:

plt.figure(figsize=(20,10))

附: figsize 参数以英寸为单位,而不是像素。

【讨论】:

    【解决方案2】:

    看看这里:StylesFuturile

    简而言之,您可以尝试以下选项来编辑线条、刻度等。

    plt.rcParams['font.family'] = 'serif'
    plt.rcParams['font.serif'] = 'Ubuntu'
    plt.rcParams['font.monospace'] = 'Ubuntu Mono'
    plt.rcParams['font.size'] = 10
    plt.rcParams['axes.labelsize'] = 10
    plt.rcParams['axes.labelweight'] = 'bold'
    plt.rcParams['axes.titlesize'] = 10
    plt.rcParams['xtick.labelsize'] = 8
    plt.rcParams['ytick.labelsize'] = 8
    plt.rcParams['legend.fontsize'] = 10
    plt.rcParams['figure.titlesize'] = 12
    

    也看看这个话题:

    matplotlib savefig() plots different from show()

    【讨论】:

    • 谢谢,您的链接有帮助。基本上,我只需要设置图形大小。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-25
    • 2016-11-28
    • 2011-07-31
    • 2011-03-08
    • 2013-02-16
    • 2021-10-31
    • 1970-01-01
    相关资源
    最近更新 更多