我正在使用matplotlib(在pylab内)来显示数字。我想将它们保存为.jpg格式。当我简单地使用savefig命令以JPG扩展它返回:jpg格式的matplotlib savefig
ValueError: Format "jpg" is not supported.
Supported formats: emf, eps, pdf, png, ps, raw, rgba, svg, svgz.
有没有执行这个办法?
我正在使用matplotlib(在pylab内)来显示数字。我想将它们保存为.jpg格式。当我简单地使用savefig命令以JPG扩展它返回:jpg格式的matplotlib savefig
ValueError: Format "jpg" is not supported.
Supported formats: emf, eps, pdf, png, ps, raw, rgba, svg, svgz.
有没有执行这个办法?
您可以保存图像为 '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图像:
有一些options用于控制图像的质量。
蟒蛇图像库(PIL)不是很容易安装在Mac OS上与python 2.7.2 ...它是在谈论“错误gcc-4.0 ...”:-( – cedm34 2012-01-12 16:23:29
我刚刚在我的系统上更新了matplotlib到1.1.0,现在它允许我用savefig
保存到jpg。
要升级到1.1.0 matplotlib与pip
,使用这个命令:
pip install -U 'http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-1.1.0/matplotlib-1.1.0.tar.gz/download'
EDIT(回应评论):
pylab
简直是matplotlib.pyplot的聚集和numpy命名空间(以及其他几个)只有一个命名空间。
在我的系统,pylab
仅仅是这样的:
from matplotlib.pylab import *
import matplotlib.pylab
__doc__ = matplotlib.pylab.__doc__
你可以看到,pylab
是你matplotlib安装只是一个命名空间。因此,您是否用pylab
或matplotlib.pyplot
导入它并不重要。
如果您仍然遇到问题,那么我猜测macosx后端不支持将图块保存到jpg。你可以尝试使用不同的后端。有关更多信息,请参阅here。
我有matplotlib 1.1.0。但我我在Mac上导入pylab,因此可能包含的matplotlib版本不是1.1.0,但我不知道如何确定这一点。 – cedm34 2012-01-12 08:51:50
如果您安装了PIL,Matplotlib可以直接并透明地处理jpg。你不需要叫它,它会自己做。如果Python无法找到PIL,则会引发错误。
只要安装与pip install pillow
枕头,它会工作。
澄清和更新@neo有用答案和原始问题。一个干净的解决方案包括安装Pillow,它是Python成像库(PIL)的更新版本。这是使用
pip install pillow
一旦安装完成枕头,标准Matplotlib命令
import matplotlib.pyplot as plt
plt.plot([1, 2])
plt.savefig('image.jpg')
将图保存为JPEG文件,将不产生一个ValueError了。
与@amillerrhodes回答相反,从Matplotlib 2.0开始,似乎不支持JPEG文件。如果我删除Pillow包,我仍然收到一个关于不支持的文件类型的ValueError。
我有pillow和png工作正常。我得到错误“IOError:encoder error -2当编写图像文件时“当在Enthought Canopy中运行你的代码时 – Keith 2015-06-12 18:21:46
@开箱即用的matplotlib支持PNG格式,而不需要Pillow。这表明你的错误信息是由于Pillow安装的问题引起的 – divenex 2015-07-16 08:39:01
为了完整起见:我测试了上述命令,在Ubuntu Linux和Windows下使用[Anaconda](https://store.continuum.io/cshop/anaconda/)发布 – divenex 2015-07-16 09:36:22
你可以输出到PNG,并使用imagemagick转换? – Yann 2012-01-11 21:56:58
与您的问题没有直接关系,但通常由matplotlib生成的线条艺术不适用于为模糊照片设计的JPEG格式使用的压缩算法。比较例如在Yann的回答中线条的锐度或http://img.labnol.org/di/jpg_vs_png.png – 2012-01-12 15:41:27
对于显示点,线条和/或曲线的图形,我总是使用eps,ps,pdf等矢量图形格式,我认为emf而不是像png或jpg这样的光栅图形格式。这会产生可扩展的数字,而无需分辨率损失和更小的文件大小。从png到pdf,你可能会将图像大小从400 kB缩小到40 kB。你会得到与emf类似的结果,而MS Office(如果你没有幸运地使用LaTeX)可以很好地处理emf。 – Chad 2014-02-14 13:55:18