2016-05-05 2 views
26

Sono in grado di formattare le descrizioni dei comandi quando passo il mouse su un punto dati su un grafico a linee tramite options.scales.xAxes.time.tooltipFormat, ma non riesco a farlo per la x- Asse tick tick. Il mio data.labels è una matrice di oggetti momento. Vengono visualizzati come "MMM DD, YYYY" (ad esempio il 23 febbraio 2012), ma desidero chiudere l'anno.Come formattare i valori della scala temporale dell'asse in Chart.js v2

+0

Vedere questo codice codice https://codepen.io/shivabhusal/pen/ayyVeL?editors=1010 – illusionist

risposta

47

Basta impostare tutti displayFormat a MMM DD

options: { 
    scales: { 
    xAxes: [{ 
     type: 'time', 
     time: { 
     displayFormats: { 
      'millisecond': 'MMM DD', 
      'second': 'MMM DD', 
      'minute': 'MMM DD', 
      'hour': 'MMM DD', 
      'day': 'MMM DD', 
      'week': 'MMM DD', 
      'month': 'MMM DD', 
      'quarter': 'MMM DD', 
      'year': 'MMM DD', 
     } 
     ... 

comunicazione della unità di tempo selezionato che ho impostato tutti i formati display dell'unità per MMM DD. Un modo migliore, se si ha il controllo su tutta la gamma dei suoi dati e le dimensioni del grafico, sarebbe forzare un'unità, in questo modo

options: { 
    scales: { 
    xAxes: [{ 
     type: 'time', 
     time: { 
     unit: 'day', 
     unitStepSize: 1, 
     displayFormats: { 
      'day': 'MMM DD' 
     } 
     ... 

Fiddle - http://jsfiddle.net/prfd1m8q/

+2

Credo nel secondo frammento di codice, l'unità 'unit' e' unitStepSize' devono essere inclusi d all'interno dell'oggetto 'time'. [Aggiornamento jsfiddle] (http://jsfiddle.net/prfd1m8q/1125/). Ho provato a fare una modifica ma è stata rifiutata in quanto deviava dall'intenzione originale del post ... – tchan

+0

Grazie a @tchan! Corretto. – potatopeelings

14

come da documentazione Grafico js pagina tick configuration section. puoi formattare il valore di ogni tick usando la funzione di callback. per esempio volevo cambiare la localizzazione delle date visualizzate per essere sempre tedesco. nella spunta parti delle opzioni dell'asse

ticks: { 
    callback: function(value) { 
     return new Date(value).toLocaleDateString('de-DE', {month:'short', year:'numeric'}); 
    }, 
}, 
0

È possibile formattare le date prima di aggiungerle all'array. È così che ho fatto. Ho usato AngularJS

// convertire la data in un formato standard

var dt = new Date(date); 

// prendere solo la data e il mese e spingerli al vostro allineamento etichetta

$rootScope.charts.mainChart.labels.push(dt.getDate() + "-" + (dt.getMonth() + 1)); 

Utilizzare questo array nella tua presentazione del grafico