Python - 如何将matplotlib图作为图像输出到Django中的浏览器
我正在使用Python-熊猫,Numpy来实现一些财务指标和策略。我也使用Python中的Matlab库来绘制我的数据。Python - 如何将matplotlib图作为图像输出到Django中的浏览器
另一方面,我使用Django作为我的项目的Web端部分。
我想要做的是将我的matlab绘图作为图像输出到使用Django的浏览器。
任何建议表示赞赏。 非常感谢!
回答:
这似乎是一个古老的问题,一段时间没有活动,但我最近遇到了类似的问题。我能解决它,所以我想我可以分享我的解决方案。在这里。 在你的html模板中,你应该有一个按钮来触发ajax请求。例如:
***index.html*** <a href="#" id="plot">Plot</a>
<div id="imagediv"></div>
$('#plot').click(function(){
$.ajax({
"type" : "GET",
"url" : "/Plot/",
"data" : "str",
"cache" : false,
"success" : function(data) {
$('#imagediv').html(data);
}
});
});
您的views.py(或者一个单独的文件,如果您希望例如:utils.py)应该有一个函数来绘制图形。
***utils.py*** @login_required()
def MatPlot(request):
# Example plot
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = np.pi * (15 * np.random.rand(N)) ** 2
plt.scatter(x, y, s=area, c=colors, alpha=0.5)
# The trick is here.
f = io.BytesIO()
plt.savefig(f, format="png", facecolor=(0.95, 0.95, 0.95))
encoded_img = base64.b64encode(f.getvalue()).decode('utf-8').replace('\n', '')
f.close()
# And here with the JsonResponse you catch in the ajax function in your html triggered by the click of a button
return JsonResponse('<img src="data:image/png;base64,%s" />' % encoded_img, safe=False)
当然,你需要连线此功能和URL,所以:
***urls.py*** url(r'^plot/$', Matplot, name='matplot')
以上是 Python - 如何将matplotlib图作为图像输出到Django中的浏览器 的全部内容, 来源链接: utcz.com/qa/260979.html