Django中直接输出matplotlib生成的图片方法
本文介绍如何在Django框架中直接通过HttpResponse输出Matplotlib生成的图片,无需先保存为文件。基于Python 2.7和Django 1.83环境,通过views.py中的gen_mat函数示例,展示利用FigureCanvasAgg将图表数据直接转换为PNG格式返回给浏览器的完整实现过程。
以下代码片段展示了如何在Django中直接输出由matplotlib生成的图片。网络上许多方法通常需要先保存图片文件再调用,这种方法显得不够直接。
运行环境为Python 2.7,Django版本为1.83。
该文件对应views.py,其中的函数映射需根据实际设置进行调整。
from django.shortcuts import render
from django.http import HttpResponse
from matplotlib.figure import Figure
from matplotlib.backends.backend_agg import FigureCanvasAgg
from matplotlib.dates import DateFormatter
import matplotlib.pyplot as plt
import random
import datetime
# Create your views here.
def gen_mat(request):
fig=Figure(figsize=(6,6))
ax=fig.add_subplot(111)
x=[]
y=[]
now=datetime.datetime.now()
delta=datetime.timedelta(days=1)
for i in range(10):
x.append(now)
now+=delta
y.append(random.randint(0, 1000))
ax.plot_date(x, y, '-')
ax.xaxis.set_major_formatter(DateFormatter('%Y-%m-%d'))
fig.autofmt_xdate()
canvas=FigureCanvasAgg(fig)
response=HttpResponse(content_type='image/png')
canvas.print_png(response)
plt.close(fig)
return response
以上关于在Django中输出matplotlib生成图片的方法即为全部内容,希望能提供有益参考,并欢迎大家继续支持本站。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









