39

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

ValueError: Format "jpg" is not supported.

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

有没有办法做到这一点?

4

5 回答 5

49

您可以将图像保存为“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图像:

在此处输入图像描述

于 2012-01-11T22:03:18.313 回答
42

澄清和更新@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。

于 2015-03-27T13:48:28.917 回答
8

只需安装枕头,pip install pillow它就会起作用。

于 2014-07-21T21:00:01.233 回答
4

我刚刚在我的系统上将 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。您可以尝试使用不同的后端。请参阅此处了解更多信息。

于 2012-01-11T22:40:25.387 回答
2

如果你安装了 PIL,Matplotlib 可以直接透明地处理 jpg。你不需要调用它,它会自己做。如果 Python 找不到 PIL,它将引发错误。

于 2012-03-26T19:26:04.537 回答