score:16

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;
chart.legend.renderItem(item);
chart.legend.render();

To Remove

item.options.showInLegend = false;
item.legendItem = null;
chart.legend.destroyItem(item);
chart.legend.render();

where, item can be a point or series

var item = chart.series[1];

Add Remove Legend Dynamically | Highchart & Highstock @ jsFiddle

score:6

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
}

demo1

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.

demo

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

score:6

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