2016-12-05 36 views
1

我想获取每个类别的总数据。 point.stackTotal只给出了活动数据的总数。高图堆积列每个类别的总数据

从我粘贴的代码示例中,我想知道每个水果的总消耗量。因此,即使我在右上角的图例上点击了乔的名字(这使得堆叠图表上所有乔的信息处于非活动状态),我仍然知道约翰,简和乔的苹果(以及其他任何水果)的总消耗量。鼠标悬停在每个栏类别显然,我正在寻找的不是point.stackTotal

$(function() { 
    Highcharts.chart('container', { 
     chart: { 
      type: 'column' 
     }, 
     title: { 
      text: 'Stacked column chart' 
     }, 
     xAxis: { 
      categories: ['Apples', 'Oranges', 'Pears', 'Grapes', 'Bananas'] 
     }, 
     yAxis: { 
      min: 0, 
      title: { 
       text: 'Total fruit consumption' 
      }, 
      stackLabels: { 
       enabled: true, 
       style: { 
        fontWeight: 'bold', 
        color: (Highcharts.theme && Highcharts.theme.textColor) || 'gray' 
       } 
      } 
     }, 
     legend: { 
      align: 'right', 
      x: -30, 
      verticalAlign: 'top', 
      y: 25, 
      floating: true, 
      backgroundColor: (Highcharts.theme && Highcharts.theme.background2) || 'white', 
      borderColor: '#CCC', 
      borderWidth: 1, 
      shadow: false 
     }, 
     tooltip: { 
      headerFormat: '<b>{point.x}</b><br/>', 
      pointFormat: '{series.name}: {point.y}<br/>Total: {point.stackTotal}' 
     }, 
     plotOptions: { 
      column: { 
       stacking: 'normal', 
       dataLabels: { 
        enabled: true, 
        color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || 'white' 
       } 
      } 
     }, 
     series: [{ 
      name: 'John', 
      data: [5, 3, 4, 7, 2] 
     }, { 
      name: 'Jane', 
      data: [2, 2, 3, 2, 1] 
     }, { 
      name: 'Joe', 
      data: [3, 4, 4, 2, 5] 
     }] 
    }); 
}); 

回答

0

我认为你应该能够使用stackLabels.formatter函数显示你的类别的所有可见和隐藏列的总值。您可以Highcharts API中获取有关stackLabels的更多信息: http://api.highcharts.com/highcharts/yAxis.stackLabels.formatter

stackLabels: { 
    enabled: true, 
    style: { 
     fontWeight: 'bold', 
     color: (Highcharts.theme && Highcharts.theme.textColor) || 'gray' 
    }, 
    formatter: function() { 
     var x = this.x, 
     value = 0; 

     series = this.axis.series; 
     Highcharts.each(series, function(s) { 
     value += s.userOptions.data[x]; 
     }); 
     return value; 
    } 
    } 

在这里你可以看到非常简单的例子,你如何可以实现类似于所需图表的内容: http://jsfiddle.net/h8f30uwo/

最佳,