将np.dnarray中的数据传递给Highcharts

时间:2014-06-13 02:59:55

标签: python numpy highcharts flask jinja2

我正在使用python 2.7,jinja2,flask和Highcharts。我创建了两个numpy数组(x1 and x2, type = numpy.dnarray),然后传递给Highcharts。我的问题是,Highcharts不识别向量中的逗号。

这是我的jinja2代码:

<script>
    $(function () {
    $('#container').highcharts({

      series: [{
            name: 'Tokyo',
            data: {{ x1 }}
        },  {
            name: 'London',
            data: {{ x2 }}
        }]
    });
});

这是我用network chrome dev tools查看的错误:

series: [{
     name: 'Tokyo',
     data: [1 4 5 2 3]
},  {
     name: 'London',
     data: [3 6 7 4 1]
}]

我需要将numpy数组更改为python列表以传递给Highcharts或者有更好的方法吗?感谢

2 个答案:

答案 0 :(得分:1)

我认为将其更改为列表可能是最快/最简单的路线。你可以在你的模板中这样做:

<script>
    $(function () {
    $('#container').highcharts({

      series: [{
            name: 'Tokyo',
            data: {{ x1.tolist() }}
        },  {
            name: 'London',
            data: {{ x2.tolist() }}
        }]
    });
});

或者你可以在将它传递给jinja之前进行转换......

template.render(x1=numpy_array.tolist(), x2=numpy_array.to_list())

实际上没有太大区别 - 主要是你的(或你的项目)偏好。

当然,你可以通过创建自定义过滤器并在模板中使用它的所有恶作剧:{{ x2 | repr_as_list }}这可以避免一些数据复制,但这可能比工作更多这是值得的。 (可能可以节省一点内存,但可能执行速度较慢,需要更多工作才能实现)

答案 1 :(得分:0)

问题是Highcharts只接受list而不接受numpy.array。所以,如果我喜欢传递x数组,我只做template.render(x1 = list(x))