Highcharts - изменение цвета только выбранной колонки
У меня есть гистограмма, сделанная с использованием Highcharts.JS. При щелчке на панели ее цвет меняется на оранжевый. Но когда щелкается другой бар, цвет ранее нажатого бара остается оранжевым.
Я хочу, чтобы при щелчке бара цвет всех других баров стал по умолчанию.
$('#container').highcharts({
chart: {
type: 'column'
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
plotOptions: {
series: {
point: {
events: {
click: function(event) {
console.log(this);
this.update({ color: '#fe5800' }, true, false);
}
}
}
}
},
series: [{
data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
}]
});
Fiddle link - Demo .
Заранее благодарю.
3 ответов:
var series = chart.series[0]; series.color = "#FF00FF"; chart.legend.colorizeItem(series, series.visible); $.each(series.data, function(i, point) { point.graphic.attr({ fill: '#FF00FF' }); }); series.redraw();
Можно сохранить ссылку на предыдущий бар, а при нажатии на следующий бар можно восстановить цвет предыдущего бара.
$(function () { var previousPoint = null; $('#container').highcharts({ chart: { type: 'column' }, xAxis: { categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] }, plotOptions: { series: { point: { events: { click: function(event) { console.log(this); if (previousPoint) { previousPoint.update({ color: '#7cb5ec' }); } previousPoint = this; this.update({ color: '#fe5800' }); } } } } }, series: [{ data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4] }] }); });
Обновление в 2017 году:
Теперь есть встроенный способ сделать это:
series: [{ name: 'John', data: [5, 3, 4, 7, 2, -1, -2, -3], color: 'steelblue', negativeColor: 'indianred', states: { select: { color: 'blue' } }, allowPointSelect: true }]Скрипка: http://jsfiddle.net/nk1v22du/
Comments