J'utilise matplotlib (dans pylab) pour afficher les chiffres. Et je veux les enregistrer au format .jpg. Lorsque j'utilise simplement la commande savefig avec l'extension jpg, cela renvoie:
ValueError: Format "jpg" is not supported.
Supported formats: emf, eps, pdf, png, ps, raw, rgba, svg, svgz.
Existe-t-il un moyen d'effectuer cela?
Vous pouvez enregistrer une image au format 'png' et utiliser la bibliothèque d'imagerie python PIL) pour convertir ce fichier en 'jpg':
import Image
import matplotlib.pyplot as plt
plt.plot(range(10))
plt.savefig('testplot.png')
Image.open('testplot.png').save('testplot.jpg','JPEG')
L'original:
L'image JPEG:
Pour clarifier et mettre à jour la réponse utile @neo et la question d'origine. Une solution propre consiste à installer Pillow , qui est une version mise à jour de Python Imaging Library (PIL). Cela se fait en utilisant
pip install pillow
Une fois Pillow installé, les commandes standard de Matplotlib
import matplotlib.pyplot as plt
plt.plot([1, 2])
plt.savefig('image.jpg')
enregistrera la figure dans un fichier JPEG et ne générera plus une ValueError.
Contrairement à la réponse de @amillerrhodes, depuis Matplotlib 2.0, les fichiers JPEG ne semblent pas être pris en charge. Si je supprime le package Pillow, je reçois toujours une ValueError concernant un type de fichier non pris en charge.
Installez simplement l'oreiller avec pip install pillow
et cela fonctionnera.
Je viens de mettre à jour matplotlib vers 1.1.0 sur mon système et cela me permet maintenant d'enregistrer en jpg avec savefig
.
Pour passer à matplotlib 1.1.0 avec pip
, utilisez cette commande:
pip install -U 'http://sourceforge.net/projects/matplotlib/files/matplotlib/matplotlib-1.1.0/matplotlib-1.1.0.tar.gz/download'
EDIT (pour répondre au commentaire):
pylab
est simplement une agrégation des espaces de noms matplotlib.pyplot et numpy (ainsi que quelques autres) en un seul espace de noms.
Sur mon système, pylab
est juste ceci:
from matplotlib.pylab import *
import matplotlib.pylab
__doc__ = matplotlib.pylab.__doc__
Vous pouvez voir que pylab
n'est qu'un autre espace de noms dans votre installation matplotlib. Par conséquent, peu importe que vous l'importiez avec pylab
ou avec matplotlib.pyplot
.
Si vous rencontrez toujours des problèmes, je suppose que le backend macosx ne prend pas en charge l'enregistrement des tracés en jpg. Vous pouvez essayer d'utiliser un backend différent. Voir ici pour plus d'informations.
Matplotlib peut gérer directement et de manière transparente jpg si vous avez installé PIL. Vous n'avez pas besoin de l'appeler, il le fera tout seul. Si Python ne peut pas trouver PIL, il générera une erreur.