Javascript 在不重新初始化的情况下绘制动态Nvd3图表?

Javascript 在不重新初始化的情况下绘制动态Nvd3图表?,javascript,d3.js,nvd3.js,Javascript,D3.js,Nvd3.js,我正在创建一个饼图: var chart = nv.models.pieChart() .x(function(d) { return d.key; }) .y(function(d) { return d.value; }) .valueFormat(d3.format(',d')) .labelsOutside(true) .showLabels(true); 然后我通过AJAX反复检索一些数据并更新图表:

我正在创建一个饼图:

var chart = nv.models.pieChart()
        .x(function(d) { return d.key;   })
        .y(function(d) { return d.value; })
        .valueFormat(d3.format(',d'))
        .labelsOutside(true)
        .showLabels(true);
然后我通过AJAX反复检索一些数据并更新图表:

(function loop() {
    d3.json(url, function(data) {
        d3.select('#chart svg').datum(data).call(chart);
    });
    setTimeout(loop, 2000);
})();
但是,如果我取消选中图例中的某个值以删除某个条目,它总是在下次计时器刷新时重新出现,从而导致该片段重新出现


有没有一种方法可以在不重新初始化的情况下刷新数据?我尝试过使用
.data
而不是
.datum
但没有效果。

如果不修改源代码,我认为没有。在更新功能中,您还可以模拟“单击”已取消选择的图例项,以便在初始化后再次取消选择。@Larskothoff您认为这是nvd3限制还是d3本身?nvd3。如果您自己在D3中编写此代码,则不会出现问题。