我正在使用matplotlib(在pylab中)来显示数字。我想以.jpg格式保存它们。当我只使用带有jpg扩展名的savefig命令时,返回:
ValueError: Format "jpg" is not supported.
Supported formats: emf, eps, pdf, png, ps, raw, rgba, svg, svgz.
有没有办法执行此操作?
答案 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')
原文:
JPEG图片:
答案 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,则会引发错误。