我正在生成一些谷歌图表,我被困在这里。 Google允许您将列堆叠起来。但它有限或我无法配置它工作。以谷歌为例,这里有一个例子,显示了两个国家每年生产的咖啡杯数量:
说我有相同的两个国家的另一个数据集,但这次我有速溶咖啡而不是地面。示例:
我想做的是将这两个数据集叠加在一起。所以每个专栏都是一个国家,但有两个部门:豆类和速溶咖啡。
我在想是否有办法以下列方式格式化数据表:
['Year', 'Austria', 'Austria (instant)', 'Bulgaria', 'Bulgaria (instant')],
['2003', 1736060, 10051, 250361, 68564],
['2004', 1338156, 65161, 786849, 1854654],
['2005', 1276579, 65451, 120514, 654654]
生成类似
的内容
感谢您的帮助。
答案 0 :(得分:16)
我今天刚遇到同样的问题,并按照您提交的链接进行操作。似乎最近有人回复了这个问题:
“这实际上可以使用新的材料条形图(虽然在 一种有点迂回的方式)。在新图表中,如果您制作图表 堆叠,但将一些系列放在不同的轴上,这会产生一个 这些系列的独立堆栈。不幸的是,目前没有 尚未完全隐藏轴的方法,你必须明确 设置视图窗口。最后,我们将介绍隐藏轴的选项 并对齐视图窗口,但现在必须这样做。“
这个小提琴似乎帮助我解决了这个问题:http://jsfiddle.net/p7o0pjgg/
以下是代码:
google.load('visualization', '1.1', {
'packages': ['bar']
});
google.setOnLoadCallback(drawStuff);
function drawStuff() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Topping');
data.addColumn('number', 'Nescafe Instant');
data.addColumn('number', 'Folgers Instant');
data.addColumn('number', 'Nescafe Beans');
data.addColumn('number', 'Folgers Beans');
data.addRows([
['2001', 321, 621, 816, 319],
['2002', 163, 231, 539, 594],
['2003', 125, 819, 123, 578],
['2004', 197, 536, 613, 298]
]);
// Set chart options
var options = {
isStacked: true,
width: 800,
height: 600,
chart: {
title: 'Year-by-year coffee consumption',
subtitle: 'This data is not real'
},
vAxis: {
viewWindow: {
min: 0,
max: 1000
}
},
series: {
2: {
targetAxisIndex: 1
},
3: {
targetAxisIndex: 1
}
}
};
// Instantiate and draw our chart, passing in some options.
var chart = new google.charts.Bar(document.getElementById('chart_div'));
chart.draw(data, google.charts.Bar.convertOptions(options));
};
答案 1 :(得分:4)
Visualization API不支持为每行数据创建多个列堆栈。如果需要,您可以feature request添加对此的支持。
答案 2 :(得分:1)
Dan Hogan的回答为我工作。但是,JSFiddle示例似乎不起作用(不确定,为什么。)这是一个适合我的版本。
google.charts.load('current', {'packages': ['bar']});
google.charts.setOnLoadCallback(function() {
$('.service-usage-graph').each(function() {
var table = new google.visualization.DataTable();
table.addColumn('string', 'Date');
table.addColumn('number', 'UL Peak');
table.addColumn('number', 'UL Off-peak');
table.addColumn('number', 'DL Peak');
table.addColumn('number', 'DL Off-peak');
table.addRow(['2001-01-01', 1, 2, 3, 4]);
table.addRow(['2001-01-03', 3, 2, 4, 2]);
table.addRow(['2001-01-04', 2, 2, 4, 2]);
table.addRow(['2001-01-05', 0, 1, 4, 5]);
table.addRow(['2001-01-06', 9, 2, 6, 8]);
table.addRow(['2001-01-07', 2, 2, 7, 3]);
var chart = new google.charts.Bar(this);
var options = google.charts.Bar.convertOptions({
isStacked: true,
series: {
2: { targetAxisIndex: 1 },
3: { targetAxisIndex: 1 }
},
vAxis: {
viewWindow: {
max: 15,
}
}
});
chart.draw(table, options);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div class="service-usage-graph"></div>
答案 3 :(得分:0)