2012-03-24 12 views
6

Ho un grafico a linee in alto con i prezzi delle azioni giornaliere e settimanali per un determinato stock. Il problema è quando l'array di dati è abbastanza grande i punti di dati giornalieri vengono "campionati" in punti di dati settimanali ei punti di dati settimanali vengono campionati in punti di dati mensili.Raggruppamento dei dati in base alla settimana, mensilmente dall'utente

C'è un modo per impostarli dall'utente in base alla settimana o mensilmente quando necessario.

Grazie in anticipo

risposta

7

controllare circa dataGrouping.
È possibile impostarlo per il campionamento quando necessario, ad esempio example.
O se si vuole disabilitare è possibile impostarla su false, come il codice qui sotto o here:

series: [{ 
    type: 'candlestick', 
    name: 'AAPL', 
    data: arrayOfData, 
    dataGrouping: { 
     enabled: false 
    } 
}] 
-1

Abbiamo provato un Hack intorno a questo, dove abbiamo usato di Highstock (Splinechart) RangeSelector, Event 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.

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

@fiddle

2

È possibile modificare la dataGrouping.units in qualsiasi momento attraverso ogni serie update() metodo:

//http://api.highcharts.com/highstock#plotOptions.series.dataGrouping.units 
var unit = 'week'; //'day' 'month' 

//http://api.highcharts.com/highstock#Series.update 
_chart.series.forEach(function(ser) { 
    ser.update({ 
     dataGrouping: { 
      units: [ [unit, [1]] ] 
     } 
    }, false); 
}); 

_chart.redraw(); 

Esempio: http://jsfiddle.net/X5WbN/20/

Problemi correlati