2015-01-26 16 views

risposta

8

buona domanda per quanto riguarda ChartJS. Volevo fare una cosa simile. Io cambio dinamicamente il colore del punto in un colore diverso. Hai provato questo qui sotto. L'ho appena provato e ha funzionato per me.

Prova questo:

myLineChart.datasets[0].points[4].fillColor = "rgba(000,111,111,55)" ; 

o provare questo:

myLineChart.datasets[0].points[4].fillColor = "#FF0000"; 

O anche questo:

myLineChart.datasets[0].points[4].fillColor = "lightgreen"; 

poi fare questo:

myLineChart.update(); 

Immagino che tu possa avere qualcosa del genere;

if (myLineChart.datasets[0].points[4].value > 100) { 
    myLineChart.datasets[0].points[4].fillColor = "lightgreen"; 
    myLineChart.update(); 
} 

Provalo comunque.

+0

Avrei dovuto dire che sto usando questo plugin nell'applicazione AngularJS: http://carlcraig.github.io/tc-angular-chartjs/ Ma il codice sopra, mi ha permesso di farlo attraverso l'impostazione come al solito secondo la documentazione di ChartJS. – Xander

1

Solo aggiungendo ciò che ha funzionato per me nella nuova versione 2.0.

Invece di:

myLineChart.datasets[0].points[4].fillColor = "lightgreen"; 

ho dovuto usare:

myChart.config.data.datasets[0].backgroundColor[4] = "lightgreen"; 

Non sono sicuro se questo è a causa di un cambiamento di 2.0 o perché sto utilizzando un grafico a barre e non un grafico a linee .

13

In aggiornamento alla versione 2.2.2 di ChartJS, ho trovato che la risposta accettata non funziona più. I set di dati prenderanno un array contenente informazioni sullo stile per le proprietà. In questo caso:

var pointBackgroundColors = []; 
var myChart = new Chart($('#myChart').get(0).getContext('2d'), { 
    type: 'line', 
    data: { 
     datasets: [ 
      { 
       data: dataPoints, 
       pointBackgroundColor: pointBackgroundColors 
      } 
     ] 
    } 
}); 

for (i = 0; i < myChart.data.datasets[0].data.length; i++) { 
    if (myChart.data.datasets[0].data[i] > 100) { 
     pointBackgroundColors.push("#90cd8a"); 
    } else { 
     pointBackgroundColors.push("#f58368"); 
    } 
} 

myChart.update(); 

ho trovato questo di consultare i nostri campioni per ChartJS, in particolare questo: "Different Point Sizes Example"

+0

Grazie al lavoro come a un fascino –

+1

Per controllare il colore del bordo del punto, utilizzare lo stesso approccio, ma con la proprietà 'pointBorderColor'. – cokeman19

0

Se si inizializza il myChart in questo modo,

var myChart = new Chart(ctx, { 
    type: 'line', 
    data: { 

si deve cambia il colore della linea con questo codice

myChart.data.datasets[0].backgroundColor[0] ="#87CEFA"; 

Se si inizializza il myChart in questo modo,

myBar = new Chart(ctx).Line(barChartData, { 

si deve cambiare il colore della linea da questo codice

myLineChart.datasets[0].points[4].fillColor = "#FF0000"; 
3

Ecco che cosa ha funzionato per me (v 2.7.0), prima ho dovuto impostare pointBackgroundColor e pointBorderColor nel set di dati ad un array (si può riempire questo array con i colori in primo luogo se volete):

var myChart = new Chart(ctx, { 
    type: 'line', 
    data: { 
     datasets: [ 
      { 
       data: dataPoints, 
       pointBackgroundColor: [], 
       pointBorderColor: [], 
      } 
     ] 
    } 
}); 

Quindi è possibile scimmia con i colori del punta direttamente:

myChart.data.datasets[0].pointBackgroundColor[4] = "#cc00cc"; 
    myChart.data.datasets[0].pointBorderColor[4] = "#cc0000"; 
    myChart.update(); 

Alcuni altri oggetti da giocare con a distinguere un punto: pointStrokeColor (a quanto pare esiste ma io non riesco a farlo funzionare), pointRadius & pointHoverRadius (interi), pointStyle ('triangolo ',' rect ',' rectRot ',' cross ',' crossRot ',' star ',' line ', e' dash '), anche se non riesco a capire il de errori per pointRadius e pointStyle.

Problemi correlati