Używam Highcharts do reprezentowania grup szeregów czasowych. Punkty danych zebrane od tej samej osoby są połączone liniami, a punkty danych od osób należących do tej samej grupy mają ten sam kolor. Legenda Highcharts wyświetla poszczególne serie czasowe zamiast grup, a mam ponad sto szeregów czasowych, brzydkie i niepraktyczne jest ukrywanie i pokazywanie danych w ten sposób.Ukrywanie _groups_ z serii w Highcharts i jQuery: jak uzyskać akceptowalną wydajność?
Zamiast tego zrobiłem przyciski i użyłem jQuery, aby powiązać je z funkcjami, które wyszukałyby pasujące kolory w szeregu czasowym i przełączały widoczność każdej pasującej serii.
Oto przykład z małego zestawu danych: http://jsfiddle.net/bokov/VYkmg/6/
Tutaj funkcja ukrywania serii z tego przykładu:
$("#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");
});
Powyższe prace. Problem polega na tym, że moje prawdziwe dane mogą mieć ponad sto indywidualnych serii czasowych i wygląda na to, że sprawdzenie koloru każdej serii jest naprawdę powolne. Czy ktokolwiek może zaproponować bardziej efektywny sposób rozwiązania tego problemu? Czy są jakieś wbudowane metody Highcharts, które już to robią? Czy mogę dać jQuery bardziej szczegółowy selektor?
Próbowałem kopać w element <svg>
stworzony przez Highcharts, ale nie mogę dowiedzieć się, które elementy podrzędne odpowiadają serii na wykresie.
Dzięki.
Ty, Panie, jesteś geniuszem. Dziękuję z całego serca. – f1r3br4nd
Serdecznie zapraszamy! – EndangeredMassa
Odkryłem więcej informacji o tym, jak działa tutaj Highcharts. Wygląda na to, że przerysowanie nie jest konieczne w przypadku tego konkretnego typu aktualizacji. Nie musisz go wywoływać, gdy skończysz. Wystarczy go zaślepić pustą funkcją i przywrócić ją do normalnego stanu po zakończeniu. – EndangeredMassa