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.
Есть ли способ выполнить это?
Ответы
Ответ 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, это вызовет ошибку.