如何使用for循环动态添加行到Google图表

8
我在使用 Google 图表时遇到了问题。
我正在使用 asp.net Mvc。当我从控制器获取数据后,我将其传递到 Google 图表中。
当我手动输入数据时,例如:
['Month', 'Bolivia', 'Ecuador', 'Madagascar', 'Papua New Guinea', 'Rwanda', 'Average'],
['2004/05',  165,      938,         522,             998,           450,      614.6],

它正确地显示给我。

但是我如何将我的数据动态添加到Google图表中?

这是我的代码:

for (var i = 0; i < chartsdata.length; i++) {

    var data = google.visualization.arrayToDataTable([
        ['Element', 'Density', {role: 'style'}],
        [chartsdata[i].MonthValue, chartsdata[i].CountValue, '#b87333']
    ]);

    var options = {
        title: ''
    };

    var chart = new google.visualization.ComboChart(document.getElementById('chartdiv'));
    chart.draw(data, options);
}

你是如何分配图表数据的? - abiNerd
3个回答

7
你现在的做法是错误的。你应该按照以下方式进行:
 var data=[];
 var Header= ['Element', 'Density', { role: 'style' }];
 data.push(Header);
 for (var i = 0; i < chartsdata.length; i++) {
      var temp=[];
      temp.push(chartsdata[i].MonthValue);
      temp.push(chartsdata[i].CountValue);

      data.push(temp);
  }
var chartdata = new google.visualization.arrayToDataTable(data);

7

您可以使用"google.visualization.DataTable()"及其"addRow()"方法。详情请参考谷歌开发者文档

var data = new google.visualization.DataTable();
data.addColumn('string', 'Month');
data.addColumn('number', 'Count');

for (var i = 0; i < chartsdata.length; i++) {
     data.addRow([chartsdata[i].month, chartsdata[i].count]);
}

0

对我来说已解决:

var data=[];

var Header= ['Element', 'Density', { role: 'style' }];

data.push(Header);

for (var i = 0; i < chartsdata.length; i++) {

      var temp=[];
      temp.push(chartsdata[i].MonthValue);
      temp.push(chartsdata[i].CountValue);
      temp.push("red"); //this will change based on value of 'i' variable
      data.push(temp);
  }

var chartdata = new google.visualization.arrayToDataTable(data);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接