Вы также можете обернуть метод drawLegendSymbol в круговой прототип и визуализировать все, что хотите, без каких-либо ограничений. Вам понадобятся те же события и методы, которые предлагает @ppotaczek.
(function(H) {
H.wrap(H.seriesTypes.pie.prototype, 'drawLegendSymbol', function(proceed, legend, item) {
var options = legend.options,
symbolHeight = legend.symbolHeight,
square = options.squareSymbol,
symbolWidth = square ? symbolHeight : legend.symbolWidth;
var series = this;
var halo;
item.legendSymbol = series.chart.renderer.rect(
square ? (legend.symbolWidth - symbolHeight) / 2 : 0,
legend.baseline - symbolHeight + 1, // #3988
symbolWidth,
symbolHeight,
H.pick(legend.options.symbolRadius, symbolHeight / 2)
)
.addClass('highcharts-point')
.attr({
zIndex: 4
}).add(item.legendGroup);
H.addEvent(item.legendItem.element, 'mouseover', function() {
halo = series.chart.renderer.rect(
square ? (legend.symbolWidth - symbolHeight) / 2 : 0,
legend.baseline - symbolHeight + 1, // #3988
symbolWidth,
symbolHeight,
H.pick(legend.options.symbolRadius, symbolHeight / 2)
)
.addClass('highcharts-point')
.attr({
fill: item.color,
'fill-opacity': 0.25,
zIndex: 1
})
.add(item.legendGroup);
halo.animate({
width: symbolWidth * 1.8,
height: symbolHeight * 1.8,
translateX: -symbolWidth * 0.4,
translateY: -symbolHeight * 0.4,
r: H.pick(legend.options.symbolRadius, symbolHeight / 2 + symbolHeight * 0.4)
}, 0);
});
H.addEvent(item.legendItem.element, 'mouseout', function() {
halo.animate({
width: symbolWidth,
height: symbolHeight,
translateX: 0,
translateY: 0,
r: 0
});
});
})
})(Highcharts)
jsFiddle: https://jsfiddle.net/BlackLabel/5beq3psn/