将退出过渡添加到基于 D3 圆形包的可重用模块
Adding on-exit transition to D3 circle pack-based reusable module
我有一个基于d3.layout.pack图形示例的可重用模块。
我在节点元素上添加了退出时的过渡,但似乎过渡仅适用于一个数据集,而不适用于另一个数据集。
基本上,为了模拟数据更新,我以这种方式调用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();
您可以在文件底部找到数据更新部分,并在第 431 行找到退出转换处理。
你能检查一下有什么问题吗?
您看到的行为是由 D3 中数据匹配的方式引起的。对于其中一个数据集,所有数据元素都与现有的 DOM 元素匹配,因此exit
选择是空的——你只是更新现有元素的位置、维度等。
"修复"此问题的方法是明确告诉 D3 您希望如何匹配数据 - 例如,通过将第 424 行更改为
.data(nodes, function(d) { return d.name; });
这将比较name
以确定数据元素是否由 DOM 元素表示。在这里修改了jsfiddle。
相关文章:
- D3在一个调用中绘制不同的SVG形状,没有可见性
- Javascript,访问一个主要对象模块模式中的每个对象
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 如何从模块链中调用函数.导出到节点中
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- 尽管链接成功并已成功下载,但未找到NPM模块
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- 如何在d3.js中返回路径的y坐标
- d3基于用户选择动态更新节点
- 有条件更新d3.js力图中节点的最佳方法
- 为什么我的d3.jsselectAll+过滤器没有过滤
- 从模块内部访问Express装载路径
- 使用D3.js计算带有字母间距的文本长度
- d3中堆栈函数和嵌套函数之间的差异
- RequireJS向模块传递配置总是返回undefined
- Node.js正在更改应用程序以使用集群模块
- 在Meteor项目中安装并包含npm模块后出错
- 将退出过渡添加到基于 D3 圆形包的可重用模块
- 创建可重用D3.js/jQuery数据属性组件或模块的可能性
- 将D3.js与模块模式结合使用