我正在使用 matplotlib(在 pylab 中)来显示数字。我想将它们保存为 .jpg 格式。当我简单地使用带有 jpg 扩展名的 savefig 命令时,它会返回:
ValueError: Format "jpg" is not supported.
Supported formats: emf, eps, pdf, png, ps, raw, rgba, svg, svgz.
有没有办法做到这一点?
我正在使用 matplotlib(在 pylab 中)来显示数字。我想将它们保存为 .jpg 格式。当我简单地使用带有 jpg 扩展名的 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图像:
澄清和更新@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 3.1 开始,JPEG 文件仍然不受支持。如果我删除 Pillow 包,我仍然会收到有关不受支持的文件类型的 ValueError。
只需安装枕头,pip install pillow
它就会起作用。
我刚刚在我的系统上将 matplotlib 更新为 1.1.0,现在它允许我使用savefig
.
要使用 升级到 matplotlib 1.1.0 ,请pip
使用以下命令:
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
还是 with导入它都没有关系matplotlib.pyplot
。
如果您仍然遇到问题,那么我猜测 macosx 后端不支持将绘图保存到 jpg。您可以尝试使用不同的后端。请参阅此处了解更多信息。
如果你安装了 PIL,Matplotlib 可以直接透明地处理 jpg。你不需要调用它,它会自己做。如果 Python 找不到 PIL,它将引发错误。