构建空图表,然后设置它的数据

时间:2012-08-31 13:17:27

标签: javascript jquery ajax highcharts

我已经开始在Highcharts实现柱形图。(http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/demo/combo/柱形图部分)

我将系列设置为:

...
series : []
...

我从服务器返回......

[ {
  "name" : "4346",
  "data" : [ 3010840179 ],
  "type" : "column"
}, {
  "name" : "20232",
  "data" : [ 2135308977 ],
  "type" : "column"
} ]

当我复制该值并首先设置系列时,它会渲染图形。但是我不会从服务器返回什么(有多少元素等),我尝试了:

chart.series = data; //chart is my chart variable's name, data is the returning JSON String from server.

然而,图表没有任何反应,我知道这不是一个有效的用法。我该怎么做才能一次设置图表的系列变量?

PS 1:我尝试在我的回调函数中设置数据$ .getJSON()

PS 2: chart.series [n] .setData();不适合我。我有来自服务器的每个元素的数据和名称。我想立刻设置图表的整个系列变量。

编辑1: http://jsfiddle.net/HD6CY/这就是我想要实现的目标。

编辑3:我想用系列创建一个图表:[]并且在我从服务器获取数据后(需要很长时间)我想将它设置为我的图表的seres变量。如果等待获取数据,我不想阻止我的图表被创建,我想建立空,然后我将设置它。我将在屏幕上显示加载文本,这样就会有一些东西而不是空页面,即使它没有任何东西可以在开始时显示。

2 个答案:

答案 0 :(得分:3)

查看addSeries

构建空图表后,请执行以下操作。

var  variable =   [{
    type: 'column',
    name: 'Jane',
    data: [3, 2, 1, 3, 4]
}, {
    type: 'column',
    name: 'John',
    data: [2, 3, 5, 7, 6]
}, {
    type: 'column',
    name: 'Joe',
    data: [4, 3, 3, 9, 0]
}]; 
for(var i in variable) {
    chart.addSeries(variable[i], false); // don't redraw
}
chart.redraw(); // redraw only after add all series

DEMO

参考

答案 1 :(得分:1)

您是否尝试过在ajax呼叫成功时创建图表? :

  ...
  success: function(data) { 
       var chart;  
       chart = new Highcharts.Chart({
             ...
             series: data
             ....
       });
  ...