如何使用 matplotlib 将图形保存为 600 dpi 的 tiff 压缩图?

Shu*_*huf 9 python matplotlib

最近,我决定从 MATLAB 移植到 Matplotlib 来绘制图形。在 MATLAB 中,我要做的就是转到“文件”>“导出”>“渲染”,然后选择 600 dpi,然后选择“应用到图形”,然后导出。在 Matplotlib 中,我使用 matplotlib 库中的命令 savefig 作为

matplotlib.pyplot.savefig(fname, dpi=None, facecolor='w', edgecolor='w',
    orientation='portrait', papertype=None, format=None,
    transparent=False, bbox_inches=None, pad_inches=0.1,
    frameon=None).
Run Code Online (Sandbox Code Playgroud)

然后我将 dpi 设置为 600,并将 .tiff 设置为输出格式。除了文件非常大 ~ 32 mb 之外,效果很好。显然,我不能在期刊手稿中使用这么大的文件。我想知道是否有一种方法可以将压缩合并到文件中,以便在不损失分辨率的情况下获得较小尺寸的图像文件。

cch*_*ala 11

matplotlib版本 3.1.0 开始,现在可以在通过 kwarg 保存图形时直接将参数传递给 PILpil_kwarg

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

fig.savefig('/tmp/foo.tiff', dpi=600, format="tiff", pil_kwargs={"compression": "tiff_lzw"})
Run Code Online (Sandbox Code Playgroud)

但要小心拼写错误,因为savefig似乎默默地吞下了不受支持的 kwargs,例如pil_kwargssss......

此 PR中介绍了该功能,该 PR 取代了Ignacio Vergara Kausel 在其回复中链接的 PR


Ign*_*sel 1

到目前为止,还无法添加tiff格式压缩。有一个悬而未决的问题和可行的解决方案,但自去年 5 月左右以来尚未看到任何进展。

在工作解决方案中,有一个建议的工作流程和报价

...使用 MPL 生成巨大的 TIFF 图像文件,然后将它们导入到 PIL 中,使用 TIFF 压缩将它们保存在 PIL 中,然后丢弃未压缩的 TIFF 文件。

scikit -image项目具有一些具有压缩功能的tiff图像保存功能,它可能会根据您的用例对您有所帮助。

该期刊很可能接受除tiff. 然后您可以选择DPI 为 600 的pngjpeg,它基本上可以满足日记的所有用途。