如何使用web2py动态生成图形和图表

时间:2014-12-16 10:51:15

标签: d3.js graph web2py

我从数据库中解雇后获取数据。我想使用这些数据生成一些基本图形来解释结果。我读了一些Protovis有助于实现这一目标的帖子,但我找不到有关它的内容。在理想情况下,我想使用d3js生成的数据驱动文档。

2 个答案:

答案 0 :(得分:1)

以下是如何在web2py中使用d3.js的示例。这适用于我使用本书this d3.js sample中的Interactive Data Visualizations for the Web

添加控制器controllers/d3js.py

import random 
def histogram():
    dataset = [(random.randint(1,6) + random.randint(1,6)) for i in range(100)]
    return dict(dataset=dataset, title='D3.js Histogram')

使用从控制器传递的动态功能添加包含d3.js代码的视图view/d3js/histogram.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>{{=title}}</title>
        <script type="text/javascript" src="https://d3js.org/d3.v3.min.js" ></script>
    </head>
    <body>
        <script type="text/javascript">

            {{from gluon.serializers import json}}
            var dataset = {{=XML(json(dataset))}};

            //Width and height
            var w = 600;
            var h = 600;
            ...

            //Create SVG element
            var svg = d3.select("body")
                        .append("svg")
                        .attr("width", w)
                        .attr("height", h);

            ...

        </script>
    </body>
</html>

答案 1 :(得分:0)

您想要生成哪种图表/图表?如果您正在使用基本条形图,则可以使用web2py的HTML帮助程序在服务器端生成它们。 Here's an example of a page that does that

如果我没记错的话,另一个选择是Massimo的(web2py项目负责人)Canvas库,它提供了一个matplotlib接口。

除此之外,正如您所指出的,有很多javascript库。有一个web2py plugin for Google charts