有没有人遇到过在两个单独的html容器中运行两个实时更新图表的问题,而且只有一个图表会更新新数据?当页面上只有一个图表(图表)时,一切都有效,但是当有两个图表时,两个图表都有效(它们是交互式的)但是一个图表不能用实时数据更新吗?
我使用d3生成两个图表作为两个对象,并将每个图表放在一个单独的容器中(我有一个单独的脚本用于生成名为SomeChart.js的图表),然后在每个图表上调用更新数据方法:
我运行以下两个代码来创建变量:firstChart(在容器ID中的FirstChartContainerID')secondChart(在容器ID中的SecondChartContainerID')
d3.csv("data.csv", function(error, data) {
data.forEach(function(d) {
d.time = parseDate(d.time);
d.data = +d.data;
});
var firstChart = new SomeChart('FirstChartContainerID', data);
setInterval(function(){
d3.csv("updatingdata.csv", function(error, newData) {
firstChart.updateData(newData);
});
}, 30000);
});
然后使用SomeChart.js中的'update'方法更新每个图表
this.updateData = function(newData) {
j = data.length;
for(i = 0; i < newData.length; i++){
data[j] = {"time": parseDate(newData[i].time), "data": +(newData[i].data)}
j++;
}
redrawAxesContext(true); redrawYAxesFocus(true);
redrawLines();
$(container).trigger('LineGraph:dataModification')
}