2013-05-16 11 views
5

Sto attraversando un periodo molto difficile per ottenere il raggruppamento dei dati per mese. Sono persino arrivato al punto di filtrare a livello di programmazione i miei dati per restituire solo l'ultimo giorno del mese e calcolare il valore mensile. Ho cercato di trovare una buona spiegazione sulla proprietà "dataGrouping", ma non ho avuto fortuna a capirlo, né a implementarlo correttamente. Ogni risultato restituisce le mie serie in un intervallo giornaliero.Raggruppamento dati - Mensile (fine mese)

Le mie domande sono le seguenti:

  1. C'è un numero minimo di punti di dati necessari per i dati di raggruppamento a lavoro?
  2. Sotto il dataGrouping.units Ho provato a utilizzare questa documentazione ma non ha funzionato nulla per me - Risultati ancora in un intervallo giornaliero - Qualcuno potrebbe spiegarlo per me?

Qualsiasi aiuto su questo sarebbe GRAZIE apprezzato.

risposta

8

Stai utilizzando il grafico di HighStock?

Se sì ...

Certo, ci vuole un sacco di dati per ottenere il raggruppamento. Se l'opzione di raggruppamento dei dati è abilitata, Highstock gestisce automaticamente il passaggio tra ogni modalità di raggruppamento. Quindi, se non si dispone di molti dati, non funzionerà con le impostazioni predefinite

Quindi, se si desidera raggruppare per impostazione predefinita, è necessario forzare il raggruppamento.

series:[{ 
    [...] 
     dataGrouping: { 
      approximation: "sum", 
      enabled: true, 
      forced: true, 
      units: [['month',[1]]] 

     } 
}] 

EDIT

Ecco un esempio di lavoro demo (fork di un highstock demo di base) http://jsfiddle.net/NcNvu/

Speranza che aiuta! Saluti

+0

Sto assumendo le unità:: [[ 'mese', [1]] dove 1 è uguale al numero di mesi per gruppo? – Scott

+0

@Scott sì, guarda questo: http://api.highcharts.com/highstock#plotOptions.series.dataGrouping.units –

+0

Grazie per le risposte. Solo per curiosità, qualcuno dovrebbe conoscere il numero minimo di punti dati necessari affinché il raggruppamento dei dati funzioni? – Scott

1

abbiamo provato un Hack intorno a questo, dove abbiamo usato di Highstock (Splinechart) RangeSelector, eventi e DataGrouping. Al clic del rangeelectorButton settimanale catturiamo questo evento tramite setExtremes. Posta che cattura l'evento lo avvicini a "somma". Se si utilizzano due serie di iterare l'oggetto. Attualmente farlo settimanale solo estenderlo per mensile utilizzando corrispondente unità

events: { 
     setExtremes: function (e) { 
      if (e.rangeSelectorButton != undefined) { 
       var triger = e.rangeSelectorButton; 
       if (triger.type == 'week') { 
        $.each(this.series, function (index, obj) { 
         obj.options.dataGrouping.units[0] = ['week', [1]]; 
        }); 
       } else if (triger.type == 'day') { 
        $.each(this.series, function (index, obj) { 
         obj.options.dataGrouping.units[0] = ['day', [1]]; 
        }); 
       } 
      } 
     } 
    }, 
Problemi correlati