我正在尝试使用matplotlib和django显示图形。我已经在堆栈上阅读了很多问题,但仍然不明白在Django中使用matplotlib的最佳方法是什么。
状况:
我有一个包含大量数据的模型。在views.py中,我有一个简单的表单,它捕获一些数据并查询模型并返回数据的子集。这是相关的views.py部分:
function printDiv(divName) {
var printContents = document.getElementById(divName).innerHTML;
var originalContents = document.body.innerHTML;
document.body.innerHTML = printContents;
window.print();
document.body.innerHTML = originalContents;
}
当我到达def getinput(request):
if request.method == 'POST':
form = get_data(request.POST)
if form.is_valid():
down = form.cleaned_data['get_down']
ytg = form.cleaned_data['get_ytg']
yfog = form.cleaned_data['get_yfog']
map_data = next_play.objects.filter(last_dwn__exact=down, last_yfog__exact=yfog, last_ytg__exact=ytg)
context = {'form': form, 'query_data': map_data}
return render(request, 'play_outcomes/output.html', context)
else:
form = get_data()
return render(request, 'play_outcomes/getinput.html', {'form': form})
并输入play_outcomes/getinput
模板时,会输出大量数据。
这是我要绘制的数据,即dwn ytg yfog
中的数据。
问题:
如何将matplotlib集成到此?我是否在views.py中集成map_data
代码,我应该在单独的python模块中进行设置吗?大概我需要创建一个png文件,然后显示它?
答案 0 :(得分:2)
图是一个视图,所以视图是个好地方。另一方面,matplot lib可能很冗长,你想设置各种常量,这样每个图形看起来都有类似的风格。出于这个原因,我建议将所有图形代码移动到新文件中。
一般来说,我避免在Django中创建图形。只是一个离线"批处理,创建一些统计图表,或者我会尝试使用d3.js将数字生成卸载到客户端(但是他们接收数据集)。还有一些混合变体,我从未尝试过,例如http://subsetlab.com/super-fund-performance-and-fees.html(查看第二部分:"如何操作")。