一个图表中的几个表使用amchart

A few tables in one chart use amchart

我有一个问题要问你。 我图表的数据如下:

var chartDataFull=[]
chartData1=[{category:1, value:2},{category:2, value:3},{category:3, value:6}];
chartData2=[{category:1, value:5},{category:2, value:1},{category:3, value:2}];
chartData3=[{category:1, value:3},{category:2, value:9},{category:3, value:7}];

chartDataFull.push(chartData1, chartData2, chartData3);

我希望所有三个 table 都用 amchart 放在一张图表上(不同 "value" 同一字段 "category")。每个将由一个单独的列表示。我该怎么做?

使用您的代码填充图形(通过索引访问您的多维数组):

var chartDataFull=[]
chartData1=[{category:1, value:2},{category:2, value:3},{category:3, value:6}];
chartData2=[{category:1, value:5},{category:2, value:1},{category:3, value:2}];
chartData3=[{category:1, value:3},{category:2, value:9},{category:3, value:7}];

chartDataFull.push(chartData1);
chartDataFull.push(chartData2);
chartDataFull.push(chartData3);

第一个解决方案:

在图表中仅显示一个数据集,并可选择在它们之间切换。

代码:

chart.dataProvider = chartDataFull[1]; //switch your index here if you want another graph based on datasets. Range (0-2).

  chart = new AmCharts.AmSerialChart();
    chart.autoMarginOffset = 0;
    chart.dataProvider = chartDataFull[1]
    chart.categoryField = "category";
    chart.startDuration = 1;

Fiddle 示例:http://jsfiddle.net/Cww3D/448/

第二种解决方案

此解决方案最接近您的需求。这是通过连接数组来完成的。您已经提到您的数组不是静态的,您仍然可以使用 concat() 函数对其进行调整以满足您的需要。

代码:

chartDataFull.push(chartData1);
chartDataFull.push(chartData2);
chartDataFull.push(chartData3);
var children = chartData1.concat(chartData2,chartData3);

URL fiddle: http://jsfiddle.net/eugensunic/Cww3D/452/

官方示例

fiddle 示例:

URL fiddle: http://jsfiddle.net/amcharts/u3ypB/

您可以看到,当他们显示另一个数据集时,他们将其放在另一个图表中。

结论:

不幸的是,一旦您使用 dataProvider 属性填充 dataset 就差不多了。您已经创建了图形,但不能以插入其他数据的方式对其进行修改。填充此操作属性后,您就完成了数据填充。