加入/显示2个数据集时,GoogleChart Maps [可视化]错误

时间:2018-04-11 23:06:07

标签: javascript charts google-visualization geomap

我的数据集1就像这样 -

var data1 = new google.visualization.DataTable();
            data1.addColumn('string','Country');
            data1.addColumn('string','Data1');
            for(var j=0;j<enterpriseArray.length;j++){
                data1.addRows([[enterpriseArray[j], suspiciousCountArray[j]]]);
            }

数据集2非常相似 -

var data2 = new google.visualization.DataTable();
            data2.addColumn('string','Country');
            data2.addColumn('string','Data2');
            for(var k=0;k<enterpriseArray.length;k++){
                data2.addRows([[enterpriseArray[k], malicousCountArray[k]]]);
            }

最后这个 -

var jointData = google.visualization.data.join(data1, data2, 'full', [[0, 0]], [1], [1]);
var chart = new google.visualization.GeoChart(document.getElementById('some-div'));
chart.draw(jointData, options);

我收到此错误,而不是在控制台上,而是在我的图表应该显示的确切位置。

Error- Incompatible data table: Error: Table contains more columns than expected (Expecting 2 columns)

P.S.-如果我使用我的数据集(使用硬编码数据,而不是动态数据) -

var data1 = google.visualization.arrayToDataTable([
                ['Country', 'Activity'],
                ['Germany', 100],
                ['United States', 200],
                ['India', 350],
            ]);
var data2 = google.visualization.arrayToDataTable([
                ['Country', 'Activity'],
                ['Germany', 200],
                ['United States', 300],
                ['India', 50],
            ]);

然后正确显示图表/地图,没有任何错误。

2 个答案:

答案 0 :(得分:0)

查看Data FormatGeoChart
根据您要显示的图表类型,数据可以采用三种格式之一......

1)区域模式

数据表应至少有一个'string'列用于位置,
和一个可选的'number'颜色列

2)标记模式

数据表应至少有一个'string'列用于位置,
或两个'number'列为纬度和&amp;经度分别,
然后是标记颜色的可选'number'列,
标记大小的另一个'number'

3)文字模式

数据表应至少有一个'string'列用于位置,
以及文本大小的可选'number'

没有一种格式允许多个'string'列,
这就是为什么你收到以下错误...
Table contains more columns than expected

将这些列切换为'number'时收到的错误,
是因为您加载的数字是'string'格式

使用parseFloatparseInt ...

data1.addRows([[enterpriseArray[j], parseFloat(suspiciousCountArray[j])]]);

答案 1 :(得分:0)

这里的问题是我需要将字符串转换为整数(来自我想要显示的动态数据;为此使用parseInt),然后将Data1和Data2的类型更改为&#39; number&#39 ;正如 Pirate X 在他的评论中指出的那样。