我使用chartjs(条形图)来显示一些数据。 我试图动态地将数据添加到数据集数组,但它不起作用。
例如,假设我在数据集数组中有2个对象,我动态创建此对象并尝试将其推入数据集(来自Chrome控制台) 页面加载后,图表已经启动。
var e = {
fillColor : "#efefef",
strokeColor : "#efefef",
highlightFill: "#efefef",
highlightStroke: "#efefef",
data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
}
然后
barChartData.datasets.push(e)
我也试过window.myBar.update()
但是没有什么事情发生。
你知道这个问题吗? 谢谢,
答案 0 :(得分:11)
我不认为您可以使用addData添加系列 - 它可以为现有系列添加点数/小节。
但是,您可以将新系列直接插入图表对象。使用图表对象和新数据集如此
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]
}
插入新数据集的代码将是
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();
小提琴 - http://jsfiddle.net/pvak6rkx/(3秒后插入新数据集)
答案 1 :(得分:11)
在版本2.x中,您可以直接向图表添加(或删除)数据,然后调用update()
,例如
barChart.data.datasets.push({
label: 'label2',
backgroundColor: '#ff0000',
data: [1,2,3]
});
barChart.update();
答案 2 :(得分:0)
您缺少图表实例中的 data
键,即 barChartData.data.datasets.push(e);
不需要任何方法。 js 图表对象 data.datasets
键接受一个对象数组。因此,在您的情况下使用:
var e = {
fillColor : "#efefef",
strokeColor : "#efefef",
highlightFill: "#efefef",
highlightStroke: "#efefef",
data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
}
barChartData.data.datasets[] = e; // this will append additional data to your chart
barChartData.update();
只需确保 barChartData
是您的 js 图表的实例。