我有一个堆叠柱形图,每个月显示 3 个键/值,一个堆叠在另一个之上。有些月份可能有负面影响。当前的功能是让 highcharts 为每个月放置两个堆叠标签。一张用于正面(顶部),一张用于负面(底部)。
请看下面的代码和js fiddle作为例子:
$(function () {
$('#container').highcharts({
chart: {
type: 'column'
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
yAxis: {
stackLabels: {
enabled: true,
align: 'center'
}
},
plotOptions: {
column: {
stacking: 'normal',
pointPadding: 0,
groupPadding: 0,
dataLabels: {
enabled: false,
color: '#FFFFFF'
}
}
},
series: [{
data: [29.9, -71.5, 106.4, -129.2, 144.0, -176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
}, {
data: [144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4, 29.9, 71.5, 106.4, 129.2]
},
{
data: [55.9, 90.5, 106.4, 350.2, 144.0, 52.0, 130.6, 148.5, 216.4, 194.1, 95.6, 54.4]
}]
});
});
我想要的功能实际上是拥有一个包含所有三个值之和的堆叠标签,而不是两个单独的标签。因此,对于二月(在 fiddle 中),它会在列上方显示 195,因为 266.50 - 71.50 = 195。
我一直在想办法做到这一点,但一直没有成功,因为 highcharts 将正面和负面视为单独的图表。任何帮助,将不胜感激!谢谢。
最佳答案
使用 Pawel Fus (Highcharts) 在 this Link 提供的解决方案
yAxis: {
stackLabels: {
enabled: true,
align: 'center',
formatter: function() {
var sum = 0;
var series = this.axis.series;
for (var i in series) {
if (series[i].visible && series[i].options.stacking == 'normal')
sum += series[i].yData[this.x];
}
if(this.total > 0 ) {
return Highcharts.numberFormat(sum,1);
} else {
return '';
}
}
}
}
关于javascript - Highcharts 将正数和负数的列总和堆叠在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34639531/