Я использую Highcharts для представления групп временных рядов. Таким образом, точки данных, собранные от одного и того же человека, соединяются линиями, а точки данных от людей, принадлежащих к одной группе, имеют один и тот же цвет. Легенда Highcharts отображает каждый индивидуальный временной ряд вместо групп, а у меня их более сотни, так что скрывать и показывать данные таким образом некрасиво и непрактично.
Вместо этого я сделал кнопки и использовал jQuery, чтобы связать их с функциями, которые будут искать совпадающие цвета среди временных рядов и переключать видимость каждой совпадающей серии.
Вот пример с небольшим набором данных: http://jsfiddle.net/bokov/VYkmg/6/
Вот функция скрытия серий из этого примера:
$("#button").click(function() {
if ($(this).hasClass("hideseries")) {
hs = true;
} else {
hs = false;
}
$(chart.series).each(function(idx, item) {
if (item.color == 'green') {
if (hs) {
item.show();
} else {
item.hide();
}
}
});
$(this).toggleClass("hideseries");
});
Вышеупомянутое работает. Проблема в том, что мои реальные данные могут иметь более сотни отдельных временных рядов, и похоже, что проверка цвета каждого ряда очень медленная. Итак, может ли кто-нибудь предложить более эффективный способ решения этой проблемы? Есть ли какие-то встроенные методы Highcharts, которые уже это делают? Или я могу дать jQuery более конкретный селектор?
Я попытался раскопаться в элементе
, созданном Highcharts, но я не могу понять, какие дочерние элементы соответствуют серии в диаграмме.
Спасибо.