matplotlib以jpeg格式保存

时间:2012-01-11 21:36:55

标签: matplotlib jpeg figure

我正在使用matplotlib(在pylab中)来显示数字。我想以.jpg格式保存它们。当我只使用带有jpg扩展名的savefig命令时,返回:

ValueError: Format "jpg" is not supported.

Supported formats: emf, eps, pdf, png, ps, raw, rgba, svg, svgz.

有没有办法执行此操作?

5 个答案:

答案 0 :(得分:38)

您可以将图像保存为“png”并使用python图像库(PIL)将此文件转换为“jpg”:

import Image
import matplotlib.pyplot as plt

plt.plot(range(10))
plt.savefig('testplot.png')
Image.open('testplot.png').save('testplot.jpg','JPEG')

原文:

enter image description here

JPEG图片:

enter image description here

答案 1 :(得分:22)

澄清并更新@neo有用的答案和原始问题。一个干净的解决方案包括安装Pillow,它是Python Imaging Library(PIL)的更新版本。这是使用

完成的
pip install pillow

安装Pillow后,标准的Matplotlib命令

import matplotlib.pyplot as plt

plt.plot([1, 2])
plt.savefig('image.jpg')

会将图形保存为JPEG文件,并且不会再生成ValueError。

与@amillerrhodes的答案相反,从Matplotlib 2.0开始,似乎不支持JPEG文件。如果我删除了Pillow包,我仍会收到有关不支持的文件类型的ValueError。

答案 2 :(得分:7)

只需使用pip install pillow安装枕头即可。

答案 3 :(得分:4)

我刚刚在我的系统上将matplotlib更新为1.1.0,它现在允许我使用savefig保存到jpg。

要使用pip升级到matplotlib 1.1.0,请使用以下命令:

pip install -U 'http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-1.1.0/matplotlib-1.1.0.tar.gz/download'

编辑(回复评论):

pylab只是matplotlib.pyplot和numpy名称空间(以及其他一些名称空间)的集合,它们是一个名称空间。

在我的系统上,pylab就是这样:

from matplotlib.pylab import *
import matplotlib.pylab
__doc__ = matplotlib.pylab.__doc__

您可以看到pylab只是matplotlib安装中的另一个命名空间。因此,无论您是使用pylab还是matplotlib.pyplot导入它都无关紧要。

如果你仍然遇到问题,那么我猜测macosx后端不支持将图表保存到jpg。您可以尝试使用不同的后端。有关详细信息,请参阅here

答案 4 :(得分:1)

如果你已经安装了PIL,Matplotlib可以直接和透明地处理jpg。你不需要打电话,它会自己做。如果Python找不到PIL,则会引发错误。