我遇到了同样的问题,我的一些系列的最后一个值是 0,所以标签会显示在 X 轴上而不是顶部。对于动态数据,确保最后一个值永远不会为 0 将是一个真正的挑战。@dlaliberte 给了我一个提示,从这个评论开始:
“作为一种解决方法,您可以考虑使用带有额外系列的 ComboChart 在每个列堆栈的顶部绘制一个点。您必须自己计算其他系列的总数才能知道将每个点放在哪里。”
我从 google 的图库中找到了一个组合图,然后打开 jsfiddle 看看我能做什么。我主要保留了数据,但更改了系列名称标签并使数字更简单一些。不要被图表的目的所吸引,不管数据是什么,我只是想弄清楚即使最后一列是 0,如何将我的注释放在图表顶部(https://jsfiddle.net/ L5wc8rcp/1/ ):
function drawVisualization() {
// Some raw data (not necessarily accurate)
var data = google.visualization.arrayToDataTable([
['Month', 'Bolivia', 'Ecuador', 'Madagascar', 'Papua New Guinea', 'Rwanda', 'Total', {type: 'number', role: 'annotation'}],
['Application', 5, 2, 2, 8, 0, 17, 17],
['Friend', 4, 3, 5, 6, 2, 20, 20],
['Newspaper', 6, 1, 0, 2, 0, 9, 9],
['Radio', 8, 0, 8, 1, 1, 18, 18],
['No Referral', 2, 2, 3, 0, 6, 13, 13]
]);
var options = {
isStacked: true,
title : 'Monthly Coffee Production by Country',
vAxis: {title: 'Cups'},
hAxis: {title: 'Month'},
seriesType: 'bars',
series: {5: {type: 'line'}},
};
var chart = new google.visualization.ComboChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
这产生了这个图表,这是一个很好的开始:
正如你所看到的,因为系列 5(我们其他系列的总数)是 a type: 'line'
,所以它总是指向堆栈的顶部。现在,我不一定想要图表中的这条线,因为它不用于比较连续的水平总计,所以我用 更新了系列 5 lineWidth: 0
,然后将该类别的标题设为 '' 这样它就不会被包括在内在图例中作为堆栈(https://jsfiddle.net/Lpgty7rq/):
function drawVisualization() {
// Some raw data (not necessarily accurate)
var data = google.visualization.arrayToDataTable([
['Month', 'Bolivia', 'Ecuador', 'Madagascar', 'Papua New Guinea', 'Rwanda', '', {type: 'number', role: 'annotation'}],
['Application', 5, 2, 2, 8, 0, 17, 17],
['Friend', 4, 3, 5, 6, 2, 20, 20],
['Newspaper', 6, 1, 0, 2, 0, 9, 9],
['Radio', 8, 0, 8, 1, 1, 18, 18],
['No Referral', 2, 2, 3, 0, 6, 13, 13]
]);
var options = {
isStacked: true,
title : 'Monthly Coffee Production by Country',
vAxis: {title: 'Cups'},
hAxis: {title: 'Month'},
seriesType: 'bars',
series: {5: {type: 'line', lineWidth: 0}},
};
var chart = new google.visualization.ComboChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
瞧!