Matplotlib Savefig в формате JPEG - PullRequest
       63

Matplotlib Savefig в формате JPEG

30 голосов
/ 12 января 2012

Я использую matplotlib (внутри pylab) для отображения цифр.И я хочу сохранить их в формате .jpg.Когда я просто использую команду savefig с расширением jpg, это возвращает:

ValueError: Format "jpg" is not supported.

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

Есть ли способ сделать это?

Ответы [ 5 ]

38 голосов
/ 12 января 2012

Вы можете сохранить изображение как «png» и использовать библиотеку изображений Python для преобразования этого файла в «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

22 голосов
/ 27 марта 2015

Для уточнения и обновления @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, похоже, не поддерживаются.Если я удаляю пакет «Подушка», я все равно получаю ошибку ValueError о неподдерживаемом типе файла.

7 голосов
/ 22 июля 2014

Просто установите подушку с pip install pillow, и она будет работать.

4 голосов
/ 12 января 2012

Я только что обновил matplotlib до 1.1.0 в своей системе, и теперь он позволяет мне сохранять в jpg с 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 или с matplotlib.pyplot.

Если вы все еще сталкиваетесь с проблемой, то я предполагаю, что бэкэнд macosx не поддерживает сохранение графиков в jpg. Вы можете попробовать использовать другой бэкэнд. См. здесь для получения дополнительной информации.

1 голос
/ 26 марта 2012

Matplotlib может работать с jpg напрямую и прозрачно, если вы установили PILВам не нужно называть это, он сделает это сам.Если Python не может найти PIL, он выдаст ошибку.

...