• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Python – 如何将matplotlib图作为图像输出到Django中的浏览器

python 来源:furbymely 12次浏览

我正在使用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') 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)