我正在使用csv文件中的数据来使用Highchart生成折线图。这是我的代码:
/* Define Initial and basic Options */
var options = {
chart: {
type: 'line',
renderTo: 'graph_container'
},
title: {
text: 'FanniemaeAcquisition Cash Flow'
},
yAxis: {
title: {
text: 'Amount($)'
}
},
series: []
};
/* Parse CSV File */
$.get('{% static "data/FanniemaeAcquisitions.csv" %}', function(csv) {
var lines = csv.split('\n');
var series = {
name: '',
data: []
};
$.each(lines, function (lineNo, line) {
var items = line.split(',');
$.each(items, function (itemNo, item) {
if(itemNo == 1){
if (lineNo == 0){
series.name = item;
} else {
series.data.push(parseFloat(item));
}
}
});
});
options.series.push(series);
console.log(options.series);
});
// Create the chart
var chart = new Highcharts.Chart(options);
然而这不起作用。我尝试通过手动输入数据来测试它:
series: [{
name: 'Installation',
data: [43934, 52503, 57177, 69658, 97031, 119931, 137133, 154175]
},
并且工作正常。所以我看一下传递给series
的变量。有效的(手动输入):
不起作用的那个(来自CSV):
有什么想法吗?
编辑:好的。这里发生了一些奇怪的事情。 Highchart没有显示在网页上,但它显示我下载为PNG时。更奇怪的部分是它在网页上显示如果我手动添加数字值但是当我从CSV中提取值时图表消失了......但是当我下载为PNG时它显示图表...任何想法??第二次编辑:好的,所以当我这样做时:console.log(JSON.stringify(options.series[0].data));
什么都没有显示出来。这意味着在生成图形之后会出现从csv文件解析的值。那么我该如何解决这个问题呢?洛尔
答案 0 :(得分:0)
问题是由于Javascript的异步问题。我只是将我的函数包装在$.when
中,并且它有效!