2013-04-12 9 views
7

Obecnie poszukuję do wdrożenia Highcharts JS, używając miesięcy jako kategorii osi X.Automatycznie dołącz brakujące dane w Highcharts JS

Mam jednak luki w moich danych i życzę sobie, aby wykres automatycznie łączył luki.

Na przykład, jeśli nie mam żadnych danych na marzec, chcę, aby luty i kwiecień łączyły się z linią liniową.

Korzystanie demo highcharts, że dane były edytowane w celu wykazania, co aktualnie dzieje się domyślnie:

http://jsfiddle.net/kf26t/1/

data: [7.0, 10.0, null, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6] 

Jak widać, nie ma przerwy w przewodzie między lutym a kwietniem .

Rozważałem usunięcie miesięcy bez danych z kategorii, ale wtedy da to przekrzywiony wynik, ponieważ luty i kwiecień będą równej odległości od siebie jak kwiecień i maj, co nie da dokładna reprezentacja.

Jeśli mam usunąć 4 miesiące, to niedokładne reprezentacja jest przesadzone:

http://jsfiddle.net/kf26t/2/

categories: ['Jan', 'Feb', 
        'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 

Jedynym rozwiązaniem można myślę, jest obliczenie średniej pomiędzy miesięcy, ale don” t chcesz wyświetlać średnie.

Czy istnieje jakiś wbudowany sposób wypełniania tych luk w Highchart JS? Jeśli nie, czy istnieje lepsze rozwiązanie tego, co zasugerowałem?


Czy istnieje sposób oddzielenia osi X na podstawie wartości? Więc jeśli nie ma miesiąca marcowego, luty i kwiecień pojawiają się w odległości 2 miesięcy.

Byłoby to również przydatne, gdy liczby całkowite są osiami x. Na przykład, gdybym miał "1, 2, 10", nie chciałbym, żeby były równomiernie rozłożone.

+0

Co jest nie tak ze średnią rzeczy?Z pewnością byłaby to cecha, którą Highcharts wyświetlałby automatycznie, gdyby wypełnił luki. Chyba może chcesz to bez punktu zawisu? – musefan

+0

@musefan To prawda, jest to średnio generowane, niewprowadzone dane. Dlatego nie chcę, aby był to "kamień milowy". – Curt

+0

@musefan Zobacz moją ostatnią zmianę. Wolę nie wyświetlać marszu jako kategorii i po prostu rozdzielić kategorie dalej. – Curt

Odpowiedz

3

Dla tego typu zachowania należy używać zamiast Highcharts JS wartości Highstocks JS.

data: [ 
       [Date.UTC(2013,  0, 1), 1], 
       [Date.UTC(2013, 1, 1), 2 ], 
       [Date.UTC(2013, 3,  1), 4], 
       [Date.UTC(2013, 4,  1), 5 ], 
       [Date.UTC(2013, 5, 1), 6 ], 
       [Date.UTC(2013, 6, 1), 7], 
       [Date.UTC(2013,  7,  1), 8], 
       [Date.UTC(2013,  8,  1),9], 
       [Date.UTC(2013, 9, 1), 10], 
       [Date.UTC(2013, 10, 1), 11], 
       [Date.UTC(2013, 11, 1), 12] 
      ] 

żywo Demo:http://jsfiddle.net/q2kSf/

+0

jaka jest przewaga Highstock nad highchartami? – jlbriggs

-1

w celach informacyjnych: type: 'spline' (patrz Curt's Live Demo) załatwił sprawę dla mnie.

function createChart() { 
var chartOptions = { 
    chart: 
    { 
    type: 'spline', 
     *//other options and stuff...* 
    } 
} 
} 

(I zmodyfikowane this file zamaskować krótkie przestoje czujnika dla projektu malina-pi)

Powiązane problemy