Je suis en train d'écrire un script simple et rapide pour générer des graphiques à la volée. J'utilise le code ci-dessous (issu de la documentation de [Matplotlib][1]) comme point de départ :
from pylab import figure, axes, pie, title, show
# Make a square figure and axes
figure(1, figsize=(6, 6))
ax = axes([0.1, 0.1, 0.8, 0.8])
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
fracs = [15, 30, 45, 10]
explode = (0, 0.05, 0, 0)
pie(fracs, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True)
title('Raining Hogs and Dogs', bbox={'facecolor': '0.8', 'pad': 5})
show() # Actually, don't show, just save to foo.png
Je ne souhaite pas afficher le tracé sur une interface graphique, mais plutôt l'enregistrer dans un fichier (disons foo.png), afin de pouvoir l'utiliser, par exemple, dans des scripts batch. Comment puis-je faire cela ?
Bien que la question ait reçu une réponse, j’aimerais ajouter quelques conseils utiles pour l’utilisation de [matplotlib.pyplot.savefig][1]. Le format du fichier peut être spécifié par l'extension :
from matplotlib import pyplot as plt
plt.savefig('foo.png')
plt.savefig('foo.pdf')
Cela donnera respectivement une sortie rasterisée ou vectorisée, qui peuvent toutes deux être utiles. De plus, vous trouverez que pylab
laisse un espace généreux, souvent indésirable, autour de l'image. Supprimez-le avec :
savefig('foo.png', bbox_inches='tight')
[1] : https://matplotlib.org/api/_as_gen/matplotlib.pyplot.savefig.html#matplotlib.pyplot.savefig
La solution est la suivante :
pylab.savefig('foo.png')
Si vous n’aimez pas le concept de la figure "actuelle", faites-le :
import matplotlib.image as mpimg
img = mpimg.imread("src.png")
mpimg.imsave("out.png", img)