Highcharts - 堆栈图显示所有值的平均值

时间:2016-02-17 06:55:37

标签: highcharts

我使用highcharts进行统计数据显示。我想在堆栈标签上显示所有值的平均值。

以下是我正在做的事情,但我似乎无法做到正确:

yAxis: {
            min: 0,
            title: {
                text: 'Task'
            },
            stackLabels: {
                    style: {
                        color: 'black'
                    },
                    enabled: true,
                    formatter: function() {

                        return (this.axis.series[1].yData[this.x]).toPrecision(2) + '%';

                    }
                }
        },

以上仅采用堆栈上的最后一个值并显示百分比。例如,如果最后一个值为50,则上面显示50%作为堆栈值。我想取所有值的平均值。任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:1)

如果要显示任何堆栈的百分比,则表示如果堆叠柱具有两个堆叠A-5和B-10,则列中的B%为66%,A的百分比为33%。如果要在格式化函数中显示使用以下内容(请参阅This Fiddle Link

 formatter: function() {

                    return (this.axis.series[1].yData[this.x] / this.total * 100).toPrecision(2) + '%';

                }

根据OP的评论进行更新 Refer Working fiddle here

使用以下代码:在变量中生成数据并计算总和

var seriesData =  [{
            name: 'Incomplete',
            data: [1, 3, 4, 7, 20]
        }, {
            name: 'Complete',
            data: [3, 4, 4, 2, 5]
        }];
  var total = 0;
   $.each(seriesData,function(item){
    $.each(seriesData[item].data,function() {
     total += this;

  }); 
}); 

然后在stacklabel formatter中使用以下代码:

       formatter: function() {

                    return ( this.total/ total * 100).toPrecision(2) + '%';

                } 


    series:seriesData

希望它有所帮助:)

答案 1 :(得分:0)

这似乎并不像应该的那样容易。

我会通过预处理数据来生成平均数组,然后从stackLabels格式化函数中引用该数组来实现此目的。

示例,构建平均值(假设数组'数据'以及每个系列数据值的子数组):

var sum = 0;
var averages = [];
var dataLen = data.length;
$.each(data[0], function(x, point) {
    sum = 0;
  for(var i = 0; i < dataLen; i++) {
    sum += data[i][x];
  }
  averages.push(sum/dataLen);
})

然后在格式化程序中:

yAxis : { 
  stackLabels: {
    enabled: true,
    formatter: function() {
      return Highcharts.numberFormat(averages[this.x],2);
    }
  }
}

示例:

如果我能找到一种方法来获得每个堆栈中可靠的点数,你可以使用

return this.total/countOfPoints;

格式化程序中的

,无需构建数组,但我似乎无法可靠地计算数据。