Google Chart API错误“给定轴上的所有系列必须具有相同的数据类型”

时间:2012-11-04 05:43:19

标签: charts

enter image description here

我使用googlechart获得LineGraph。此图表使用以下代码

创建
function drawChart() {
    var data = google.visualization.arrayToDataTable([ 

      ['Categegories', 'R1' , 'R2' , 'R3' , 'R4' , 'R5' , 'R6' ],

      ['A',          1,     4,       2,    4,       1,  null],

      ['D',          3,  null,    null,    7,    null,     1],

      ['G',          null,  null,    null,       8,    null,  null],

    ]);

    var options = {
      title: 'Graph',
      pointSize: 6,
      vAxis: {minValue:0, maxValue:10,gridlines:{count:6}},
    };

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

现在我很惊讶地删除了数据行['D', 3, null, null, 7, null, 1],

它会产生错误,指出 All series on a given axis must be of the same data type


我已将代码缩减为一行,但我发现null值存在问题

e.g。

['Category', 'R1' , 'R2' , 'R3' ],
['A',       2,  1,  1]

它生成图形,而如果我在数据的任何位置添加null值,即在(2,1,1)的位置它不会...

等待有关设置处理null值的某种选项的一些专家指导......非常奇怪的是,有些时间空值有效,有些时候没有...... :(

5 个答案:

答案 0 :(得分:46)

最后,我找到了解决问题的方法。我希望这能帮助像我这样的许多人。问题基本上是arrayToDataTable方法的限制。所有列中的数据行必须具有正确的类型。由于我们在行中有空值,因此API要么假定该列的数据类型为null,要么是因为没有获得有效的数据类型而引发错误。要解决此问题,您必须切换到标准的DataTable构造函数

var data = new google.visualization.DataTable();
data.addColumn('string', 'Year');
data.addColumn('number', 'Health (P)');
data.addColumn('number', 'Health (A)');
data.addColumn('number', 'Gender (P)');
data.addColumn('number', 'Gender (A)');
data.addColumn('number', 'Education (P)');
data.addColumn('number', 'Education (A)');
data.addColumn('number', 'Agriculture (P)');
data.addColumn('number', 'Agriculture (A)');
data.addColumn('number', 'Social protection (P)');
data.addColumn('number', 'Social protection (A)');
data.addColumn('number', 'Environment (P)');
data.addColumn('number', 'Environment (A)');
data.addColumn('number', 'Water/sanitation (P)');
data.addColumn('number', 'Water/sanitation (A)');
data.addRows([

    ['2008',81.06,null,1.32,null,94.68,0,13.41,null,30.36,null,19.78,null,36.87,null],
    ['2009',27.13,null,22.34,null,33.6,null,79.92,null,1.34,null,89.77,0,15.68,null],
    ['2010',104.89,0,14.61,null,33.46,null,30.29,null,22.28,null,107.81,null,1.39,null],
    ['2011',55,0,110.69,null,1.3,null,106.24,0,14.45,null,27.34,null,30.71,null],
    ['2012',29.96,null,27.88,null,44.77,null,133.83,null,1.31,null,105.01,null,17.83,null],
    ['2013',0,null,0,null,0,null,0,null,0,null,0,null,0,null]
]);

从以下链接复制 https://groups.google.com/forum/?fromgroups=#!topic/google-visualization-api/2Jafk8PyjV4

或者,使用arrayToDataTable(),您可以在标题行中指定类型。请参阅文档了解更多https://developers.google.com/chart/interactive/docs/datatables_dataviews#arraytodatatable

var data = google.visualization.arrayToDataTable([
      ['Categegories', {label: 'R1', type: 'number'} , {label: 'R2', type: 'number'} , {label: 'R3', type: 'number'} , {label: 'R4', type: 'number'} , {label: 'R5', type: 'number'} , {label: 'R6', type: 'number'} ],

      ['A',          1,     4,       2,    4,       1,  null],

      ['D',          3,  null,    null,    7,    null,     1],

      ['G',          null,  null,    null,       8,    null,  null],

    ]);

答案 1 :(得分:3)

对我来说,这个错误是由于一个额外的列从未附加任何值而引起的

答案 2 :(得分:2)

我认为在标题行中指定类型将解决问题。

var data = google.visualization.arrayToDataTable([
['Category', {label: 'Return', type: 'number'}, {label: 'Risk', type: `enter code here`'number'}],
[1.5,  20, 50]
]);

答案 3 :(得分:1)

我通过创建一个条形图来获得此错误,该条形图包含两个包含字符串的列和一个包含数字的列。我打算显示一个视图,使第二个字符串列保持隐藏但忘记了。

答案 4 :(得分:0)

我在从 Google 表格创建图表时遇到了这个错误。 删除所有空列解决了这个问题。不是什么大问题,但仍然很烦人。