2013-04-01 15 views
40

Ho un grafico che voglio includere nel mio sito web usando Chart.js. Nel asse Y mi dà i numeri reali, invece di interi, e questo è quello che voglio, ecco una foto di quello che ho adesso:come cambiare i valori dell'asse Y da numeri reali a interi in chartjs?

enter image description here

E questo è il codice:

var lineChartData = { 

     labels : ["2013/04/01","2013/03/31", "2013/03/30", "2013/03/29", "2013/03/28","2013/03/27", "2013/03/26"], 

     datasets : [ 
      { 
       fillColor : "rgba(151,187,205,0.5)", 
       strokeColor : "rgba(151,187,205,1)", 
       pointColor : "rgba(151,187,205,1)", 
       pointStrokeColor : "#fff", 
       data : ["0", "2","1", "0", "1","0","1"] 
      } 
     ] 

    } 

var myLine = new Chart(document.getElementById("canvas").getContext("2d")).Bar(lineChartData); 
+0

bisogno di questo, l'hai risolto? – Mewel

risposta

51

Prova questo, dove max è il valore più alto dei tuoi dati.

var steps = 3; 
new Chart(ctx).Bar(plotData, { 
    scaleOverride: true, 
    scaleSteps: steps, 
    scaleStepWidth: Math.ceil(max/steps), 
    scaleStartValue: 0 
}); 
+2

grazie mille, ha funzionato! –

+0

sì, funziona! – RolandoCC

+0

@Mewel Non voglio che le etichette sull'asse y vengano visualizzate. Come potrei farlo? Ci deve essere un'opzione giusta. –

5

Se vi piace iniziare in un numero diverso da zero, bisogna tenerne conto:

var step = 5; 
var max = 90 
var start = 40; 
new Chart(income).Bar(barData, { 
scaleOverride: true, 
scaleSteps: Math.ceil((max-start)/step), 
scaleStepWidth: step, 
scaleStartValue: start 
}); 
5

Consultare la documentazione Chart.js, nella sezione di configurazione globale:

// Boolean: indica se la scala deve rimanere invariata rispetto agli interi, non galleggia anche se lo spazio di disegno è presente scaleIntegersOnly: true,

Spero che sia d'aiuto.

+0

Questo non sembra funzionare per me – jcuenod

+0

Se non funziona probabilmente non hai 'scaleOverride: true'. – Gavin

+0

Probabilmente la versione 1 del grafico, che è obsoleto – John

29

non ero in grado di ottenere le risposte esistenti per lavorare per me quando si utilizza la nuova versione 2 di Chart.js, ecco cosa ho trovato per risolvere questo problema in V2:

new Chart(ctx, {type: 'bar', data: barChartData, 
    options:{ 
    scales: { 
     yAxes: [{ 
     ticks: { 
      stepSize: 1 
     } 
     }] 
    } 
    } 
}); 
+5

si prega di essere consapevoli che questo mostrerà tutti gli interi nel vostro asse y. se il tuo grafico è in esecuzione da 0 a 300, verranno mostrati tutti i 301 numeri interi e le linee della griglia. – apfz

+0

@apfz Molto vero, questo funziona bene solo se si ha una buona idea della scala dei dati e si può calcolare in anticipo una dimensione ragionevole. – DBS

59

L'ho gestito in questo modo nella nuova versione:

new Chart(ctx, { 
    type: 'bar', 
    data: chartData, 
    options: { 
    scales: { 
     yAxes: [{ 
     ticks: { 
      beginAtZero: true, 
      callback: function(value) {if (value % 1 === 0) {return value;}} 
     } 
     }] 
    } 
    } 
}); 
+1

Grazie amico! Ha funzionato come un fascino. Mi chiedo perché questa non sia la risposta migliore. –

+2

Questa dovrebbe essere la risposta accettata – John

Problemi correlati