最近,我决定从MATLAB移植到Matplotlib来绘制我的图表。在MATLAB中,我要做的只是转到文件> export> render然后选择600 dpi然后选择apply to figure然后导出。在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).
然后我将dpi设置为600并将.tiff设置为输出格式。这工作正常,但文件非常大~32 MB。很明显,我不能在期刊手稿中使用这么大的文件。我想知道是否有办法将压缩合并到文件中,以便可以获得更小的图像文件而不会损失分辨率。
答案 0 :(得分:1)
截至目前,无法为tiff
格式添加压缩。有一个开放的issue和一个有效的solution,但自去年五月左右以来没有取得过进展。
在工作解决方案中,有一个建议的工作流程和引用
...用MPL生成巨大的TIFF图像文件,然后在PIL中导入它们,保存 他们在PIL中使用压缩TIFF然后丢弃 未压缩的TIFF文件。
scikit-image项目有一些tiff
图片保存functionality并进行了压缩,根据您的使用情况,它可能对您有帮助。
除了tiff
之外,期刊最有可能接受其他格式。然后你可以去png
或jpeg
,DPI为600,基本上可以用于期刊的所有目的。
答案 1 :(得分:1)
从matplotlib
版本3.1.0开始,现在可以directly pass parameters to PIL when saving a figure via the kwarg pil_kwarg
:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
fig.savefig('/tmp/foo.tiff', dpi=600, format="tiff", pil_kwargs={"compression": "tiff_lzw"})
但是要小心输入错误,因为savefig
似乎会默默地吞下不受支持的kwarg,例如pil_kwargssss
...
此功能是在this PR中引入的,它取代了PR linked by Ignacio Vergara Kausel in his response。