0

有没有人遇到过在两个单独的 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')
}
4

0 回答 0