Γράφω ένα γρήγορο και βρώμικο σενάριο για να δημιουργώ διαγράμματα εν κινήσει. Χρησιμοποιώ τον παρακάτω κώδικα (από την τεκμηρίωση 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
Δεν θέλω να εμφανίσω το γράφημα σε ένα γραφικό περιβάλλον, αντίθετα, θέλω να αποθηκεύσω το γράφημα σε ένα αρχείο (π.χ. foo.png), έτσι ώστε, για παράδειγμα, να μπορεί να χρησιμοποιηθεί σε σενάρια δέσμης ενεργειών. Πώς μπορώ να το κάνω αυτό;
Ενώ η ερώτηση έχει απαντηθεί, θα ήθελα να προσθέσω μερικές χρήσιμες συμβουλές κατά τη χρήση του matplotlib.pyplot.savefig. Η μορφή του αρχείου μπορεί να καθοριστεί από την επέκταση:
from matplotlib import pyplot as plt
plt.savefig('foo.png')
plt.savefig('foo.pdf')
Θα δώσει μια έξοδο σε μορφή rasterized ή vectorized αντίστοιχα, τα οποία και τα δύο θα μπορούσαν να είναι χρήσιμα. Επιπλέον, θα διαπιστώσετε ότι το pylab
αφήνει ένα γενναιόδωρο, συχνά ανεπιθύμητο, κενό διάστημα γύρω από την εικόνα. Αφαιρέστε το με:
savefig('foo.png', bbox_inches='tight')
Η λύση είναι:
pylab.savefig('foo.png')
Αν δεν σας αρέσει η έννοια του "τρέχοντος" σχήματος, κάντε το:
import matplotlib.image as mpimg
img = mpimg.imread("src.png")
mpimg.imsave("out.png", img)