Jag skriver ett snabbt och smutsigt skript för att generera diagram i farten. Jag använder koden nedan (från Matplotlib dokumentation) som utgångspunkt:
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
Jag vill inte visa plotten på ett grafiskt gränssnitt, istället vill jag spara plotten till en fil (säg foo.png), så att den till exempel kan användas i batch-skript. Hur gör jag det?
Även om frågan har besvarats vill jag lägga till några användbara tips när du använder matplotlib.pyplot.savefig. Filformatet kan specificeras med hjälp av tillägget:
from matplotlib import pyplot as plt
plt.savefig('foo.png')
plt.savefig('foo.pdf')
Ger en rasteriserad respektive vektoriserad utskrift, båda kan vara användbara. Dessutom kommer du att märka att pylab
lämnar ett generöst, ofta oönskat, vitrymderum runt bilden. Ta bort det med:
savefig('foo.png', bbox_inches='tight')
Lösningen är:
pylab.savefig('foo.png')
Om du inte gillar konceptet med den nuvarande siffran, gör det:
import matplotlib.image as mpimg
img = mpimg.imread("src.png")
mpimg.imsave("out.png", img)