2013-05-24 4 views
7

Apprezzo molto se qualcuno mi può aiutare in questo. Stiamo usando Jqplot per tracciare alcuni dati statistici e come la funzionalità di zoom.Ottieni l'elenco dei punti dati nell'area di disegno dopo lo zoom jqplot

In particolare vogliamo utilizzare gli esempi in

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

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

Una delle cose che dobbiamo fare è quello di ricalcolare alcuni valori che visualizziamo sulla pagina come deviazione standard, significa ecc per i punti visibili nel grafico dopo l'ingrandimento. Per questo abbiamo bisogno di ottenere l'elenco dei punti di dati che ci sono (rimangono) sul grafico dopo lo zoom. Quindi idealmente stiamo guardando un metodo che restituisce il dati attuali impostato sul grafico dopo l'ingrandimento.

Ho cercato la documentazione dell'API, ma nessun metodo simile sembra essere disponibile. Quindi sarei davvero grato se qualcuno mi aiuti con come dovrei procedere con questo.

Grazie .... Amit

+0

Sto cercando di ottenere gli stessi dati anche per un altro motivo, ma non vedo alcun modo semplice per farlo. Aggiornerò con una risposta se trovo qualcosa –

+0

Grazie a @JavaDrinker. Sulla stessa barca :-) – Amitabh

risposta

6

Ok, quindi dopo un sacco di scavare attraverso il codice, non c'è davvero alcun modo semplice per ottenere questi dati, ma, c'è un modo.

Nella soluzione qui di seguito, ho un ZoomChart jqPLot obj che agisce come uno zoom-proxy al mio jqPLot principale, chiamato grafico. Presumibilmente, se non si dispone di un proxy, questo dovrebbe funzionare altrettanto bene, a patto che ci si leghi all'oggetto giusto.

Quello che sto facendo è legare una funzione personalizzata all'evento 'jqplotZoom', che viene chiamato dopo che è stata completata un'azione di zoom.

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]); 
      } 
     } 
    }); 

Ha senso? In sostanza, lo chart.axes.xaxis contiene i limiti dell'area ingrandita e lo plot.series[N].data contiene tutti i dati originali nel formato grafico.

Nota che ho usato chart perché originariamente creato var chart = $.jqplot("chartDiv", ...

Si dovrebbe usare qualunque nome di variabile avete dato il vostro diagramma. Spero che questo aiuti!

+1

Posso confermare che funziona senza un proxy per. Anche quando il grafico è generato da [PrimeFaces] (http://stackoverflow.com/questions/32699503/interval-selection-event-in-primefaces-chart/3271775) – Kukeltje

Problemi correlati