¿Cómo presionar dinámicamente sets de datos para chart.js (gráfico de barras)?

Estoy usando chartjs (gráfico de barras) para mostrar algunos datos. Estoy tratando de agregar dinámicamente datos a la matriz de sets de datos, pero no funciona.

por ejemplo, digamos que tengo 2 objects en un set de sets de datos, y creo dinámicamente este object e bash introducirlo en los sets de datos (desde la console de Chrome) después de que la página cargó y el gráfico ya está activo.

var e = { fillColor : "#efefef", strokeColor : "#efefef", highlightFill: "#efefef", highlightStroke: "#efefef", data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()] } 

y entonces

 barChartData.datasets.push(e) 

También intenté hacer window.myBar.update() pero de nuevo no pasó nada.

¿Conoces este problema? Gracias,

No creo que puedas usar addData para agregar una serie, es para agregar puntos / barras a series existentes.

Sin embargo, puede insert su nueva serie directamente en el object del gráfico. Con el object de gráfico y el nuevo set de datos como tal

 var ctx = document.getElementById("chart").getContext("2d"); var myBarChart = new Chart(ctx).Bar(data); var myNewDataset = { label: "My Second dataset", fillColor: "rgba(187,205,151,0.5)", strokeColor: "rgba(187,205,151,0.8)", highlightFill: "rgba(187,205,151,0.75)", highlightStroke: "rgba(187,205,151,1)", data: [48, 40, 19, 86, 27, 90, 28] } 

el código para insert un nuevo set de datos sería

 var bars = [] myNewDataset.data.forEach(function (value, i) { bars.push(new myBarChart.BarClass({ value: value, label: myBarChart.datasets[0].bars[i].label, x: myBarChart.scale.calculateBarX(myBarChart.datasets.length + 1, myBarChart.datasets.length, i), y: myBarChart.scale.endPoint, width: myBarChart.scale.calculateBarWidth(myBarChart.datasets.length + 1), base: myBarChart.scale.endPoint, strokeColor: myNewDataset.strokeColor, fillColor: myNewDataset.fillColor })) }) myBarChart.datasets.push({ bars: bars }) myBarChart.update(); 

Fiddle – http://jsfiddle.net/pvak6rkx/ (inserta el nuevo set de datos después de 3 segundos)

En la versión 2.x, puede agregar (o eliminar) datos al gráfico directamente y luego llamar a update() , por ej.

 barChart.data.datasets.push({ label: 'label2', backgroundColor: '#ff0000', data: [1,2,3] }); barChart.update(); 

Aquí hay un ejemplo jsfiddle .