2013-05-24 11 views
7

Naprawdę doceniam, jeśli ktoś może mi pomóc w tej sprawie. Używamy Jqplot do wykreślania niektórych danych statystycznych i jak do funkcji powiększania.Zdobądź listę punktów danych na płótnie po powiększeniu jqplot

Konkretnie chcemy wykorzystać przykłady w

http://www.jqplot.com/deploy/dist/examples/zoom1.html i

http://www.jqplot.com/deploy/dist/examples/zoomOptions.html

Jednym z rzeczą, jaką musimy zrobić, to przeliczyć pewne wartości, które wyświetlenia na stronie jak odchylenie standardowe, średnie itp. dla punktów widocznych na wykresie po powiększeniu. W tym celu musimy uzyskać listę punktów danych, które są tam (pozostać) na wykresie po powiększeniu. Więc najlepiej patrzymy na metodę, która zwraca aktualne dane ustawiono widoczny na wykresie po powiększeniu.

Sprawdziłem dokumentację interfejsu API, ale nie wydaje się, aby taka metoda była dostępna. Byłbym bardzo wdzięczny, gdyby ktoś pomógł mi w wykonaniu tego.

Dzięki .... Amit

+0

Próbuję uzyskać te same dane również z innego powodu, ale nie widzę łatwego sposobu to zrobić. Będę aktualizował odpowiedź, jeśli znajdę cokolwiek –

+0

Dzięki @JavaDrinker. Na tej samej łodzi :-) – Amitabh

Odpowiedz

6

Ok, więc po wielu kopanie za pomocą kodu, nie ma tak naprawdę każde prosty sposób, aby uzyskać te dane, ale jest na to sposób.

W poniższym rozwiązania, mam zoomChart jqPLot OBJ, który działa jako Zoom-proxy do mojego głównego jqPLot, zwany wykres. Można przypuszczać, że jeśli nie masz proxy, powinno to działać równie dobrze, o ile wiążesz się z właściwym obiektem.

To, co robię, polega na powiązaniu niestandardowej funkcji ze zdarzeniem "jqplotZoom", które wywoływane jest po wykonaniu operacji powiększania.

zoomChart.target.bind('jqplotZoom', function(ev, gridpos, datapos, plot, cursor){ 
     var plotData = plot.series[0].data; 
     for (var i=0; i< plotData.length; i++) { 
      if(plotData[i][0] >= chart.axes.xaxis.min && plotData[i][0] <= chart.axes.xaxis.max) { 
       //this dataset from the original is within the zoomed region 
       //You can save these datapoints in a new array 
       //This new array will contain your zoom dataset 
       //for ex: zoomDataset.push(plotData[i]); 
      } 
     } 
    }); 

Czy to ma sens? Zasadniczo numer chart.axes.xaxis zawiera ograniczenia powiększonego obszaru, a plot.series[N].data to wszystkie oryginalne dane w formacie wykresu.

Zauważ, że użyłem chart bo pierwotnie stworzony var chart = $.jqplot("chartDiv", ...

Należy użyć co nazwa zmiennej dałeś swoje działki. Mam nadzieję, że to pomoże!

+1

Mogę potwierdzić, że działa bez pośrednika. Nawet jeśli wykres jest generowany z [PrimeFaces] (http://stackoverflow.com/questions/32699503/interval-selection-event-in-primefaces- chart/3271775) – Kukeltje