pyplot - save matplotlib figure as jpg
matplotlib savefig en formato jpeg (5)
Estoy usando matplotlib (dentro de pylab) para mostrar figuras. Y quiero guardarlos en formato .jpg. Cuando simplemente uso el comando savefig con extensión jpg, esto devuelve:
ValueError: Format "jpg" is not supported.
Supported formats: emf, eps, pdf, png, ps, raw, rgba, svg, svgz.
¿Hay una manera de realizar esto?
Acabo de actualizar matplotlib a 1.1.0 en mi sistema y ahora me permite guardar en jpg con savefig
.
Para actualizar a matplotlib 1.1.0 con pip
, use este comando:
pip install -U ''http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-1.1.0/matplotlib-1.1.0.tar.gz/download''
EDITAR (para responder al comentario):
pylab
es simplemente una agregación de los espacios de nombres matplotlib.pyplot y numpy (así como algunos otros) en un solo espacio de nombres.
En mi sistema, pylab
es simplemente esto:
from matplotlib.pylab import *
import matplotlib.pylab
__doc__ = matplotlib.pylab.__doc__
Puede ver que pylab
es solo otro espacio de nombres en su instalación de matplotlib. Por lo tanto, no importa si lo importa o no con pylab
o con matplotlib.pyplot
.
Si aún tiene problemas, supongo que el backend de macosx no admite el guardado de gráficos en jpg. Podrías intentar usar un backend diferente. Vea here para más información.
Matplotlib puede manejar jpg de forma directa y transparente si ha instalado PIL. No necesitas llamarlo, lo hará por sí mismo. Si Python no puede encontrar PIL, generará un error.
Para aclarar y actualizar @neo respuesta útil y la pregunta original. Una solución limpia consiste en instalar Pillow , que es una versión actualizada de la Biblioteca de Imágenes de Python (PIL). Esto se hace usando
pip install pillow
Una vez que se instala Pillow, los comandos estándar de Matplotlib
import matplotlib.pyplot as plt
plt.plot([1, 2])
plt.savefig(''image.jpg'')
guardará la figura en un archivo JPEG y ya no generará un ValueError.
Contrariamente a la respuesta de @amillerrhodes, a partir de Matplotlib 2.0, los archivos JPEG no parecen ser compatibles. Si elimino el paquete Pillow, todavía recibo un ValueError sobre un tipo de archivo no compatible.
Puede guardar una imagen como ''png'' y usar la biblioteca de imágenes de Python (PIL) para convertir este archivo a ''jpg'':
import Image
import matplotlib.pyplot as plt
plt.plot(range(10))
plt.savefig(''testplot.png'')
Image.open(''testplot.png'').save(''testplot.jpg'',''JPEG'')
El original:
La imagen JPEG:
Simplemente instale la almohada con la pip install pillow
y funcionará.