javascript - Highcharts 将正数和负数的列总和堆叠在一起

标签 javascript highcharts

我有一个堆叠柱形图,每个月显示 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]
        }]
    });
});

http://jsfiddle.net/sph1LjtL/

我想要的功能实际上是拥有一个包含所有三个值之和的堆叠标签,而不是两个单独的标签。因此,对于二月(在 fiddle 中),它会在列上方显示 195,因为 266.50 - 71.50 = 195。

我一直在想办法做到这一点,但一直没有成功,因为 highcharts 将正面和负面视为单独的图表。任何帮助,将不胜感激!谢谢。

最佳答案

参见 Working fiddle here

使用 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/

相关文章:

javascript - 在 img.onload 上留下处理程序是内存泄漏吗?

javascript - 如何在拖放图像后将图像缩放到 div 上的完整大小?

javascript - 如何在 Highcharts 中旋转图例?

javascript - HighCharts 导出隐藏滚动条

mysql - Highcharts 线不绘制

javascript - Highcharts 散点标记翻译错误

javascript - jquery 向第一个 child 添加元素?

javascript - React - ES6 - 动态观察文本区域的总字符长度

javascript - 在 JS 中创建的 SVG <image> 元素不显示

javascript - Highcharts - 使用 setData() 更新柱形图不起作用