Istnieje przepis w Matplotlib Cookbook, który robi dokładnie to. Zasadniczo wygląda to następująco:
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
Umieść to w swoim pliku poglądów, wskaż adres URL i uruchom.
Edycja: Jak wspomniano, jest to uproszczona wersja przepisu w książce kucharskiej. Jednak wygląda na to, że istnieje różnica między wywołaniem print_png
i savefig
, przynajmniej w początkowym teście, który zrobiłem. Dzwonienie pod numer fig.savefig(response, format='png')
dało obraz, który był większy i miał białe tło, podczas gdy oryginał canvas.print_png(response)
dał nieco mniejszy obraz z szarym tłem. Tak, chciałbym zastąpić kilka ostatnich linii powyżej:
canvas=FigureCanvas(fig)
response=django.http.HttpResponse(content_type='image/png')
fig.savefig(response, format='png')
return response
Nadal trzeba mieć utworzony materiał canvas.
Istnieje kilka innych sugestii, które wyglądają tak, jakby działały, ale to NA ZDECYDOWANIE wygląda na najłatwiejsze do użycia. Muszę dodać tylko 2 lub 3 linie kodu! Thank-You – DarwinSurvivor