#jquery #highcharts
#jquery #диаграммы верхних уровней
Вопрос:
У меня есть несколько линейных графиков с использованием Highcharts, и мне нужно скрыть все, кроме ряда данных, выбранного пользователем. Пример страницы можно найти по адресу http://opheliadesign.com/weight .
Например, в разделе «Состав тела» при нажатии на жир будут скрыты кости, вода и ИМТ, что позволит более легко просматривать график жировых отложений.
Спасибо!
Ответ №1:
Я не верю, что highcharts имеет hideAll()
или подобную функцию, но вы могли бы попробовать что-то вроде этого:
//assuming chart is your chart
series = chart.series;
for(var i = 0; i < series.length; i ) {
if(!series[i].selected) {
series[i].hide(); //Hide the series
}
}
Тогда вам просто нужно было бы вызывать этот код всякий раз, когда вы выбираете серию. Вероятно, вы могли бы сделать это, выполнив какую-то проверку с использованием событий диаграммы
Комментарии:
1. Единственным недостатком является то, что при большом количестве рядов с сотнями точек скрывание сильно затягивается.
Ответ №2:
Довольно старая тема, но информация по-прежнему полезна.
Как указал @Alvara, при сотнях серий использование .hide()
or .show()
происходит довольно медленно (браузер зависает на несколько секунд).
Использование setVisible(false, false)
и setVisible(true, false)
намного быстрее :
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;
};
Даже с большими рядами это работает мгновенно.
Использование .show().hide()
для 50 рядов уже занимает более 2 секунд для переключения видимых рядов (https://jsfiddle.net/rockshappy/nL5j2rLa/5 /)
Здесь использование setVisible
происходит мгновенно (https://jsfiddle.net/rockshappy/nL5j2rLa/2 /)
Комментарии:
1. Идеальный. Очень быстро! Именно то, что я искал