gpt4 book ai didi

javascript - 如何在数据更新时更新可重用的 d3.js 图形?

转载 作者:行者123 更新时间:2023-11-30 12:55:00 33 4
gpt4 key购买 nike

我重构了 d3.layout.pack 图示例 here成一个可重用的模块。现在我想在数据更新时更新图表。但是当我用新数据调用图表时,新图表会呈现在旧图表之上。您可以找到问题的演示 here .

基本上,为了模拟数据更新,我以这种方式调用带有 setinterval 的函数:

 function test(){
d3.select('#vis')
.datum(data2)
.call(cluster);

}

setInterval(test, 1500);

您可以在文件底部找到数据更新部分。你能检查一下有什么问题吗?

最佳答案

您的代码存在一些问题。首先,由于范围问题,您检查 SVG 是否已经存在不起作用。更好的方法是选择您想要的元素并检查您的选择是否为空。

var svg = d3.select("svg > g");
if(svg.empty()){
svg = d3.select(this).append("svg:svg").attr("width", width)
.attr("height", height)
.append("svg:g")
.attr("transform", "translate(" + (width - r) / 2 + "," + (height - r) / 2 + ")");
}

请注意,我已将 g 元素的附加部分合并到此,因为这就是您正在操作的内容。

其次,除了输入选择之外,您还需要处理更新和退出选择。我已将其添加到您的 jsfiddle here .

关于javascript - 如何在数据更新时更新可重用的 d3.js 图形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19519498/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com