2014-07-20 10 views
7

In Highcharts, ci sono demos e articles sul caricamento di set di dati di grandi dimensioni in Highcharts.Caricamento di un set di dati di grandi dimensioni in Highcharts

Siamo consapevoli che nessuno dei browser di oggi è in grado di farlo se i dati diventano troppo grandi. Fare riferimento a questo article, suggerisce di utilizzare l'aggregazione e la separazione delle tabelle per caricare i dati in HighCharts, ma non penso che la soluzione soddisfi le mie necessità.

Uso mysql per archiviare i miei dati e disporre di molte tabelle. I dati da tracciare su Highcharts sono basati su serie temporali, il che significa che i dati sono una volta al giorno.

Ho bisogno di caricare il grafico con serie diverse serie di questi dati (in base al criterio), e i dati non possono essere aggregati a mensili in quanto deve essere visualizzato solo in modalità giornaliera. In cima a questo devo impostare la prima vista del grafico come All.

Il motivo per cui non è necessario aggregare i dati perché l'utente desidera visualizzare le modifiche giornaliere. A volte ci sono dati irregolari e l'aggregazione non è la migliore opzione per questo. I dati da caricare provengono dall'anno 1980

Qual è la migliore strategia o tecnica per caricare questi dati su HighCharts?

+2

suona come un lavoro per il caricamento dinamico Ajax per me. –

+0

si.ajax significa asincronamente – Muhaimin

+3

Ben fatto per rispondere al commento di qualcuno. –

risposta

1

Hai provato a caricare i dati giornalieri? Se hai un punto dati per ogni giorno negli ultimi 45 anni, allora sono solo 16.000 punti. Indipendentemente da ciò, vorrei iniziare assicurandomi che il caricamento di tutto sia troppo per i grafici elevati e, in tal caso, prendere in considerazione uno script di aggregazione dinamico in cui lo zoom oltre una soglia, ad esempio 5 anni, attiva il set di dati sul set di aggregati a settimana.

Questo è il mio potenziale soluzione:

Caricare il grafico con la serie completa di dati risoluzione, il settimanale set aggregato, e forse al mese set. Quindi imposta un listener di eventi sul numero di punti nella vista corrente. Quando raggiunge una certa soglia, ti ridisegna per aggregare.

Non perderai davvero la possibilità di vedere eventi drastici in un giorno specifico poiché l'aggregazione di 7 giorni mostrerà comunque un picco abbastanza significativo. L'utente può quindi ingrandire e vedere i dati più dettagliati. I dati giornalieri di quarantacinque anni si riducono a poche migliaia di punti.

4

Quindi, stai dicendo che hai 35 anni di dati su base giornaliera. Per me è < 13k di punti. E poi hai un grafico, ad esempio 600 px di larghezza. Ciò significa che hai 20 punti su 1 pixel. E tu dici che l'aggregazione è cattiva, perché l'utente ha bisogno di vedere dati veri. Lascia che ti chieda, in che modo l'utente vedrà quel punto, quando ne avrà 20 in 1px? Forse sto invecchiando, ma non sarò in grado di vedere quei punti davvero buoni, solo un "percorso grasso". Confronta questi esempi: http://jsfiddle.net/Fusher/4ytzuv7o/1/

dataGrouping Proprio disabile in un secondo esempio:

dataGrouping: { 
    enabled: false 
} 

Quando lo zoom-in in un primo esempio, si otterrà dati veri in ogni caso.

Se davvero non è possibile utilizzare DataGrouping, quindi come su un'altra soluzione? Disabilitare navigatore e il pulsante 'All', per l'utente sarà in grado di ingrandire solo a intervalli specificati, in questo modo: http://jsfiddle.net/Fusher/4ytzuv7o/3/

$('#container').highcharts('StockChart', { 
    rangeSelector: { 
     inputEnabled: false, 
     buttons: [{ 
      type: 'month', 
      count: 1, 
      text: '1m' 
     }, { 
      type: 'month', 
      count: 3, 
      text: '3m' 
     }, { 
      type: 'month', 
      count: 6, 
      text: '6m' 
     }, { 
      type: 'ytd', 
      text: 'YTD' 
     }, { 
      type: 'year', 
      count: 1, 
      text: '1y' 
     }], 
     selected: 0 
    }, 
    navigator: { 
     enabled: false 
    }, 
    series: [{ 
     name: 'AAPL', 
     data: data, 
     dataGrouping: { 
      enabled: false 
     } 
    }] 
}); 
+0

la demo che hai è solo una serie. Che ne dici di 16k punti per sei serie? Non penso che Highchart sarà in grado di gestirlo. Proverò a consigliare di nuovo il mio utente. Vogliono usare il grafico per analizzare i dati di sicurezza della diga. Qualche esperienza sul display visualizza i dati per il campo ambientale? – Muhaimin

+0

Tuttavia, avere un così grande numero di punti è una cattiva idea, il grafico non è affatto utilizzabile, confronta: http://jsfiddle.net/Fusher/4ytzuv7o/4/ e http://jsfiddle.net/Fusher/4ytzuv7o/ 5 /. Penso che la soluzione con barra di scorrimento abilitata sia la migliore per il tuo caso. –