Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 添加基于D3 circle pack的可重用模块的出口转换_Javascript_D3.js_Transition_Circle Pack - Fatal编程技术网

Javascript 添加基于D3 circle pack的可重用模块的出口转换

Javascript 添加基于D3 circle pack的可重用模块的出口转换,javascript,d3.js,transition,circle-pack,Javascript,D3.js,Transition,Circle Pack,我有一个基于 我在node元素上添加了一个exit转换,但它似乎只对一个数据集有效,而对另一个数据集无效 基本上,为了模拟数据更新,我用setInterval调用一个函数,方法如下: function test(){ d3.select('#vis') .datum(data2) .call(cluster); } setInterval(test, 1500); c.exit().transition() .duration(700)

我有一个基于

我在node元素上添加了一个exit转换,但它似乎只对一个数据集有效,而对另一个数据集无效

基本上,为了模拟数据更新,我用
setInterval
调用一个函数,方法如下:

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

 setInterval(test, 1500);
 c.exit().transition()
     .duration(700)
     .attr("r", function(d){ return 0; })
     .remove();
…我以这种方式添加了过渡:

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

 setInterval(test, 1500);
 c.exit().transition()
     .duration(700)
     .attr("r", function(d){ return 0; })
     .remove();
您可以在文件底部找到数据更新部分,并在第431行找到退出转换处理


你能检查一下有什么问题吗

您看到的行为是由D3中的数据匹配方式引起的。对于其中一个数据集,所有的数据元素都与现有的DOM元素匹配,因此
exit
选择是空的——您只需更新现有元素的位置、维度等

“修复”这一问题的方法是明确地告诉D3您希望数据如何匹配——例如,将第424行更改为

.data(nodes, function(d) { return d.name; });
它将比较
名称
,以确定数据元素是否由DOM元素表示。修改的jsfiddle