В Matplotlib Cookbook есть рецепт, который делает именно это. По своей сути это выглядит так:
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
Поместите это в файл представлений, укажите на него свой URL, и все готово.
Редактировать: Как уже отмечалось, это упрощенная версия рецепта в кулинарной книге. Однако, похоже, что есть разница между вызовами print_png
и savefig
, по крайней мере в первоначальном тесте, который я сделал. Вызов fig.savefig(response, format='png')
дал изображение, которое было больше и имело белый фон, в то время как исходное canvas.print_png(response)
дало немного меньшее изображение с серым фоном. Итак, я бы заменил последние несколько строк выше на:
canvas=FigureCanvas(fig)
response=django.http.HttpResponse(content_type='image/png')
fig.savefig(response, format='png')
return response
Тем не менее, вам все еще нужно создать экземпляр canvas.