谷歌图表中可以有多个堆栈。
但它只能使用 google 的 material 条形图,
使用经典条形图/柱形图是不可能的。
经典 = google.visualization.ColumnChart & package = 'corechart'
材料 = google.charts.Bar & package = 'bar'
材质图表的问题,有几个选项不受支持,
可以在这里找到...
Tracking Issue for Material Chart Feature Parity #2143
对于初学者来说,数据表的结构需要如下...
对于两个并排的堆栈,数据表中需要 5 列。
首先是 x 轴,其余四个用于两个堆栈。
['Qtr', 'Stack 1 - Apples', 'Stack 1 - Oranges', 'Stack 2 - Apples', 'Stack 2 - Oranges'],
['Q1', 500, 1200, 816, 200],
['Q2', 163, 231, 539, 594],
['Q3', 125, 819, 200, 578],
['Q4', 197, 536, 613, 500]
接下来,为了获得多个堆栈,我们需要将“堆栈 2”移动到单独的 y 轴。
这可以在选项中完成,使用series[series number].targetAxisIndex
series: {
2: { // third data table column -- 'Stack 2 - Apples'
targetAxisIndex: 1
},
3: { // fourth data table column -- 'Stack 2 - Oranges'
targetAxisIndex: 1
}
},
默认的 y 轴是轴索引 0,而第二个 y 轴是索引 1
堆栈 2 需要设置为相同的第二个轴
以下是一个工作示例(虽然没有反应)...
google.charts.load('current', {
packages: ['bar']
}).then(function () {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Quarter');
data.addColumn('number', 'Stack 1 - Apples');
data.addColumn('number', 'Stack 1 - Oranges');
data.addColumn('number', 'Stack 2 - Apples');
data.addColumn('number', 'Stack 2 - Oranges');
data.addRows([
['Q1', 500, 1200, 816, 200],
['Q2', 163, 231, 539, 594],
['Q3', 125, 819, 200, 578],
['Q4', 197, 536, 613, 500]
]);
var options = {
chart: {
title: 'Multiple Stacks'
},
height: '100%',
isStacked: true,
series: {
2: {
targetAxisIndex: 1
},
3: {
targetAxisIndex: 1
}
},
width: '100%'
};
var container = document.getElementById('chart');
var chart = new google.charts.Bar(container);
drawChart();
window.addEventListener('resize', drawChart, false);
function drawChart() {
chart.draw(data, google.charts.Bar.convertOptions(options));
}
});
html, body {
height: 100%;
margin: 0px 0px 0px 0px;
overflow: hidden;
padding: 0px 0px 0px 0px;
}
#chart {
height: 100%;
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart"></div>
注意:对于 material 图表,您应该始终在绘制图表之前转换选项,参见上面的示例...
google.charts.Bar.convertOptions(options)