Подтвердить что ты не робот

Matplotlib savefig в формате jpeg

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

ValueError: Format "jpg" is not supported.

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

Есть ли способ выполнить это?

4b9b3361

Ответ 1

Вы можете сохранить изображение как "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')

Оригинал:

enter image description here

Изображение в формате JPEG:

enter image description here

Для управления качеством изображения существуют параметры.

Ответ 2

Чтобы уточнить и обновить @neo полезный ответ и исходный вопрос. Чистое решение состоит из установки Pillow, которая является обновленной версией библиотеки изображений Python (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 о неподдерживаемом типе файла.

Ответ 3

Я только что обновил 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'

EDIT (чтобы ответить на комментарий):

pylab - это просто агрегирование пространств имен matplotlib.pyplot и numpy (а также нескольких других) jinto в одном пространстве имен.

В моей системе pylab это только:

from matplotlib.pylab import *
import matplotlib.pylab
__doc__ = matplotlib.pylab.__doc__

Вы можете видеть, что pylab - это просто другое пространство имен в вашей установке matplotlib. Поэтому неважно, импортируете ли вы его с помощью pylab или с помощью matplotlib.pyplot.

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

Ответ 4

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

Ответ 5

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