2016-10-10 44 views
1

我有一个Highcharts的柱状图,有多个“对”,设置在一个数组中 - 其中一个是实际数字,另一个是行业平均数。如何一次只显示一对链接的Highcharts系列

var links = { 
    'Apples': 'Apples average', 
    'Pears': 'Pears average', 
    'Oranges': 'Oranges average', 
    'Bananas': 'Bananas average' 
}; 

.......

series: [{ 
     id: 'Apples', 
     name: 'Apples', 
     color: 'rgba(0,167,184,1)', 
     data: [3.8, 8.9, 8.4], 
     pointPadding: 0.3, 
     pointPlacement: 0.2 

    }, { 
     id: 'Apples average', 
     name: 'Apples average', 
     color: 'rgba(135,28,90,1)', 
     data: [2.7, 8.1, 7.9], 
     pointPadding: 0.3, 
     pointPlacement: -0.2 

    }, 

我想一次显示只有一对,所以当图表加载第一对是可见的,而当下一个图例项(对)被点击时,第一对被隐藏,并且只示出了一对新的,等等等等

plotOptions: { 
     column: { 
      pointPadding: 0.2, 
      borderWidth: 0, 
      events: { 
       legendItemClick: function (event) { 
        var sisterSeries = this.chart.get(links[this.name]); 
        if (this.visible) { 
         sisterSeries.hide(); 
        } else { 
         sisterSeries.show(); 
        } 
       } 
      } 
     } 
    }, 

我不能达到开/关切换效果我需要显示只有一个p空气一次 - 我仍然需要手动点击现有的一对隐藏它们。任何帮助,将不胜感激。

关于如何切换系列(http://jsfiddle.net/tK38J/65/)有非常类似的问题,但我找不到要切换的数据在一对中。

(在我例子的图例中,我会隐藏'... average'菜单项,所以它们不需要实际上作为链接工作)。

举例:如在评论提到http://jsfiddle.net/6cL56x9r/4/

+0

'linkedTo'属性将两个系列连接在一起,并且只显示图例中的第一个。将其与您找到答案的其他功能相结合,您应该全部设置。 http://api.highcharts.com/highcharts/plotOptions.series.linkedTo – jlbriggs

回答

2

连接配对系列。如果只有一个主要系列应该是可见的,那么你可以在legendItemClick事件这样的内循环:

legendItemClick: function (event) { 
        this.chart.series.forEach(function (serie) { 
         if (serie.linkedSeries.length && this != serie) { 
         serie.setVisible(false, false); 
         } 
        }, this); 
       } 

例子:http://jsfiddle.net/6cL56x9r/11/

你可以保持连接的一系列可见,如果设置属性showInLegend为真,但随后您需要稍微修改循环中的条件。