Piszę szybki i brudny skrypt do generowania działek w locie. Używam poniższego kodu (z dokumentacji Matplotlib) jako punktu wyjścia:
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
Nie chcę wyświetlać wykresu na GUI, zamiast tego chcę zapisać wykres do pliku (powiedzmy foo.png), aby można go było użyć w skryptach wsadowych. Jak to zrobić?
Chociaż na pytanie została udzielona odpowiedź, chciałbym dodać kilka przydatnych wskazówek podczas korzystania z matplotlib.pyplot.savefig. Format pliku może być określony przez rozszerzenie:
from matplotlib import pyplot as plt
plt.savefig('foo.png')
plt.savefig('foo.pdf')
Da odpowiednio rasteryzowane lub wektorowe wyjście, oba, które mogą być użyteczne. Dodatkowo, przekonasz się, że pylab
pozostawia wokół obrazu obfite, często niepożądane, białe przestrzenie. Usuń ją za pomocą:
savefig('foo.png', bbox_inches='tight')
Rozwiązaniem jest:
pylab.savefig('foo.png')
Jeśli nie podoba Ci się koncepcja "aktualnej" figury, zrób to:
import matplotlib.image as mpimg
img = mpimg.imread("src.png")
mpimg.imsave("out.png", img)