2011-04-23 55 views

回答

9

我不相信highcharts有hideAll()或类似的功能,但你可以尝试这样的:

//assuming chart is your chart 
series = chart.series; 
for(var i = 0; i < series.length; i++) { 
    if(!series[i].selected) { 
     series[i].hide(); //Hide the series 
    } 
} 

那么你就只需要当你选择一系列调用该代码。你可以通过执行某种检查来做到这一点chart events

+0

唯一的con是,隐藏延迟退出时,很多有很多系列有数百个积分。 – Alvaro 2014-04-30 15:27:48

0

很老的线程,但信息仍然有用。

正如@Alvara指出的,有数百个系列,使用.hide().show()是相当慢(浏览器冻结几秒钟)。

使用setVisible(false, false)setVisible(true, false)的方式更快:

legendItemClick: function (event) { 
    if (!this.visible) return true; 

    const series = this.chart.series; 
    const serieLen = series.length; 

    if (series.filter(s => s.visible).length === 1) { 
    for (let i = 0; i < serieLen; i += 1) { 
     series[i].setVisible(true, false); 
    } 
    } else { 
    for (let i = 0; i < serieLen; i += 1) { 
     series[i].setVisible(false, false); 
    } 
    series[this.index].setVisible(true, false); 
    } 
    return false; 
}; 

即使有大的系列,它的工作瞬间。

使用.show().hide()上+50系列已经超过2秒切换可见系列(https://jsfiddle.net/rockshappy/nL5j2rLa/5/

这里使用setVisible是瞬间(https://jsfiddle.net/rockshappy/nL5j2rLa/2/

相关问题