我正在使用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或者有更好的方法吗?感谢
答案 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))
。