Kirjoitan nopean ja likaisen skriptin, jolla luodaan juonteita lennossa. Käytän lähtökohtana alla olevaa koodia (Matplotlib dokumentaatiosta):
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
En'en halua näyttää piirrosta graafisella käyttöliittymällä, vaan haluan tallentaa piirroksen tiedostoon (vaikkapa foo.png), jotta sitä voidaan käyttää esimerkiksi eräsarjakäsikirjoituksissa. Miten teen sen?
Vaikka kysymykseen on vastattu, haluaisin lisätä joitakin hyödyllisiä vinkkejä matplotlib.pyplot.savefig käyttöön. Tiedostomuoto voidaan määrittää tiedostopäätteen avulla:
from matplotlib import pyplot as plt
plt.savefig('foo.png')
plt.savefig('foo.pdf')
Antaa vastaavasti rasteroidun tai vektoroidun tulosteen, jotka molemmat voivat olla hyödyllisiä. Lisäksi huomaat, että pylab
jättää runsaasti, usein ei-toivottua, valkotilaa kuvan ympärille. Poista se:
savefig('foo.png', bbox_inches='tight')
Ratkaisu on:
pylab.savefig('foo.png')
Jos et pidä "nykyisen" luvun käsitteestä, tee niin:
import matplotlib.image as mpimg
img = mpimg.imread("src.png")
mpimg.imsave("out.png", img)