Pretty old thread, but the information is still useful.
As @Alvara noted, with hundreds of episodes, using .hide() or .show() is pretty slow (the browser freezes for a few seconds).
Using setVisible(false, false) and setVisible(true, false) is faster:
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; };
Even with a large series, it works instantly.
Using .show().hide() in the +50 series already takes more than 2 seconds to switch the visible series ( https://jsfiddle.net/rockshappy/nL5j2rLa/5/ )
Here using setVisible is instant ( https://jsfiddle.net/rockshappy/nL5j2rLa/2/ )
source share