Es gibt ein Rezept in der Matplotlib Cookbook, die genau dies tut. Im Kern sieht es so aus:
def simple(request):
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
fig=Figure()
ax=fig.add_subplot(111)
ax.plot(range(10), range(10), '-')
canvas=FigureCanvas(fig)
response=django.http.HttpResponse(content_type='image/png')
canvas.print_png(response)
return response
Setzen Sie, dass in Ihren Ansichten Datei, zeigen Sie Ihre URL, um es, und du bist weg und läuft.
Edit: Wie bereits erwähnt, ist dies eine vereinfachte Version eines Rezepts im Kochbuch. Es sieht jedoch so aus, als ob es einen Unterschied zwischen dem Aufruf von print_png
und savefig
gibt, zumindest beim ersten Test, den ich gemacht habe. Rufen Sie fig.savefig(response, format='png')
gab ein Bild mit dem war größer und hatte einen weißen Hintergrund, während das Original canvas.print_png(response)
gab ein etwas kleineres Bild mit einem grauen Hintergrund. So würde ich die letzten paar Zeilen weiter oben mit ersetzen:
canvas=FigureCanvas(fig)
response=django.http.HttpResponse(content_type='image/png')
fig.savefig(response, format='png')
return response
Sie müssen noch die Leinwand instanziiert haben, though.
Es gibt ein paar andere Vorschläge, die aussehen, als ob sie funktionieren würden, aber dieses DEFINITIVE sieht für mich am einfachsten aus. Ich muss nur etwa 2 oder 3 Zeilen Code hinzufügen! Vielen Dank – DarwinSurvivor