Accepted answer

Well just setting the showInLegend doesn't do the trick, there are some more hooks that need to be taken care of

Refer Halvor Strand's answer for a more recent way

Old trick but still works

To Add

item.options.showInLegend = true;

To Remove

item.options.showInLegend = false;
item.legendItem = null;

where, item can be a point or series

var item = chart.series[1];

Add Remove Legend Dynamically | Highchart & Highstock @ jsFiddle


You can set showInLegend as false when you create the chart.

    name: 'Tokyo',
    data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6],
    showInLegend: false


If you want to update it dynamically you can do the following.

options.series[1].showInLegend = false;
chart = new Highcharts.Chart(options);

You forgot to force chart to redraw.


Or chart.legend.allItems[1].destroy(); to remove the first one.


This can now be solved without any hacks through the Series.update method (API). For example:

chart.series[0].update({ showInLegend: false });

See this JSFiddle demonstration. The method signature is:

update(Object options, [Boolean redraw])

Where options are options for any regular Series object. You can optionally halt redrawing to change multiple options before redrawing.

Related Query

More Query from same tag