Píšem rýchly a špinavý skript na generovanie pozemkov za behu. Ako východisko používam nasledujúci kód (z dokumentácie Matplotlib):
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
Nechcem graf zobrazovať v grafickom používateľskom rozhraní, namiesto toho chcem graf uložiť do súboru (povedzme foo.png), aby sa dal použiť napríklad v dávkových skriptov. Ako to mám urobiť?
Hoci otázka bola zodpovedaná, rád by som doplnil niekoľko užitočných tipov pri používaní matplotlib.pyplot.savefig. Formát súboru sa dá špecifikovať príponou:
from matplotlib import pyplot as plt
plt.savefig('foo.png')
plt.savefig('foo.pdf')
Poskytne rastrovaný, resp. vektorový výstup, pričom oba môžu byť užitočné. Okrem toho zistíte, že pylab
ponecháva okolo obrázka veľkorysý, často nežiaduci biely priestor. Odstráňte ho pomocou:
savefig('foo.png', bbox_inches='tight')
Riešením je:
pylab.savefig('foo.png')
Ak sa vám nepáči koncept "aktuálneho" čísla, urobte to:
import matplotlib.image as mpimg
img = mpimg.imread("src.png")
mpimg.imsave("out.png", img)