czy istnieje sposób na przekazanie dodatkowych danych do obiektu serii, które będą używane do wyświetlania w „podpowiedzi” wykresu?
na przykład
tooltip: {
formatter: function() {
return '<b>'+ this.series.name +'</b><br/>'+
Highcharts.dateFormat('%b %e', this.x) +': '+ this.y;
}
tutaj możemy używać tylko series.name, this.x i this.y do serii. powiedzmy, że muszę przekazać inną wartość dynamiczną samodzielnie z zestawem danych i można uzyskać dostęp za pośrednictwem obiektu serii. czy to możliwe?
Z góry dziękuję.
series
obiektu i wyświetlić je w tym module obsługi?Odpowiedzi:
Tak, jeśli skonfigurujesz obiekt serii w następujący sposób, w którym każdy punkt danych jest hashem, możesz przekazać dodatkowe wartości:
W podpowiedzi możesz uzyskać do niej dostęp poprzez atrybut „point” obiektu przekazanego:
Pełny przykład tutaj: https://jsfiddle.net/burwelldesigns/jeoL5y7s/
źródło
Dodatkowo dzięki temu rozwiązaniu możesz nawet umieścić wiele danych, ile chcesz :
Dziękuję Nick.
źródło
datetime
wartość x, ale chcemy dodać dodatkowe dane do podpowiedzi.W przypadku danych szeregów czasowych, zwłaszcza z wystarczającą liczbą punktów danych, aby aktywować próg turbo , powyższe rozwiązania nie będą działać. W przypadku progu turbo dzieje się tak, ponieważ Highcarts oczekuje, że punkty danych będą tablicą taką jak:
Aby nie stracić korzyści z progu turbo (co jest ważne w przypadku wielu punktów danych), przechowuję dane poza wykresem i wyszukuję punkt danych w podpowiedzi
formatter
funkcji . Oto przykład:To podejście będzie działać dla wszystkich typów wykresów.
źródło
data: _.map(data, row => [row['timestamp'], row['value']])
byćdata: chartData.map(row => [row.timestamp, row.value])
? Ponadto nie potrzebujesz lodash; możesz użyć Array.find . Nie jest obsługiwany przez IE, ale używasz już ES6 (const
), a MS przestał obsługiwać IE w 2016 .chartData
. Przywykłem do używania lodash, ale masz rację. Zaktualizowałem mój przykład, więc jest on niezależny od biblioteki. dzięki.Używam AJAX do pobierania danych z SQL Server, a następnie przygotowuję tablicę js, która jest używana jako dane na moim wykresie. Kod JavaScript po pomyślnym zakończeniu AJAX:
Teraz, aby wyświetlić dodatkowe metadane w podpowiedzi:
Używam DataRow do iteracji w moim zestawie wyników, a następnie używam klasy, aby przypisać wartości przed przekazaniem z powrotem w formacie Json. Oto kod C # w akcji kontrolera wywoływanej przez Ajax.
Zdaję sobie sprawę, że istnieje bardziej wydajny i akceptowalny sposób kodowania w C #, ale odziedziczyłem projekt.
źródło
Żeby dodać jakąś dynamikę:
Zrobiłem to, aby wygenerować dane dla skumulowanego wykresu kolumnowego z 10 kategoriami.
Chciałem mieć dla każdej kategorii 4 serie danych i chciałem wyświetlić dodatkowe informacje (obraz, pytanie, czynnik rozpraszający i oczekiwana odpowiedź) dla każdej z serii danych:
W sekcji highcharts:
Mam nadzieję, że to komuś pomoże.
źródło