高图堆积条形图-如何获取堆积值

时间:2018-11-16 10:10:25

标签: javascript charts highcharts bar-chart

我创建了一个高图堆积条形图,但是当数据偏斜时,条形不可见或数字重叠,如下图所示。

enter image description here

我看过很多帖子,但是没有针对此的开箱即用的解决方案,所以我正在制定我的自定义解决方案。

如果y值小于150,我将默认高度设置为150。

enter image description here

此解决方案有效,但是现在显示的条形总数为300,而不是实际的原始值。我如何自行更改总的stacklabel值?我找不到办法。

这是将高度更改为默认值的代码。我将实际值存储在点对象的realValue变量中。

chartOptions = {
        type: CHARTING.CHART_OPTIONS.TYPE.COLUMN,  
        // On chart load, apply custom logic
        events : {
            load: function () {
                var chart = this,
                    minColHeightVal = 150;

                chart.series.forEach(function (s) {
                    s.points.forEach(function (p) {

                        if (p.y < minColHeightVal) {
                            p.update({
                                y: minColHeightVal,
                                realValue: p.y
                            }, false);
                        }
                    });
                });

           // How to iterate over the bars here and sum the actual value? i.e. point.realValue and set the stacklabel?


                chart.redraw();
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

您尝试使用minPointLength选项吗?在您的情况下,这可能是一个更简单的解决方案:https://api.highcharts.com/highcharts/series.column.minPointLength

但是,使用您的代码来获得所需的结果,请使用stackLabels.formatter函数:

        formatter: function() {
            var series = this.axis.series,
                x = this.x,
                sum = 0;

            series.forEach(function(s) {
                if (s.points && s.points[x]) {
                    sum += s.points[x].realValue ? s.points[x].realValue : s.points[x].y
                }
            });

            return sum;
        }

实时演示:https://jsfiddle.net/BlackLabel/uocdykbL/

API参考:https://api.highcharts.com/highcharts/yAxis.stackLabels.formatter