在之前的一篇名为“ D3:如何为 Force Directed Graphs FDG 中的节点创建圆的缓慢过渡? ”的帖子中,我得到了关于如何在 D3 中过渡单个元素(例如“仅圆”的半径)的一个很好的答案。
我的后续问题现在是关于如何同时转换“多个 D3 属性”......
提醒一下,我正在使用 D3 生成的单选按钮将 FDG 布局中的节点大小(通过鼠标单击)从默认大小切换到缩放大小。您可以在节点集群图的左上角找到单选按钮( http://nounz.if4it.com/Nouns/Applications/A__Application_1.NodeCluster.html )
在默认数字和缩放幅度(现在使用转换)之间切换节点圆的代码如下所示......
var densityControlClick = function() {
var thisObject = d3.select(this);
var typeValue = thisObject.attr("density_type");
var oppositeTypeValue = (function() {
if(typeValue=="On") {
return "Off";
} else {
return "On";
}
})();
var densityBulletSelector = "." + "densityControlBullet-" + typeValue;
var selectedBullet = d3.selectAll(densityBulletSelector);
selectedBullet.style("fill", "Black")
var oppositeDensityBulletSelector = "." + "densityControlBullet-" + oppositeTypeValue;
var selectedOppositeBullet = d3.selectAll(oppositeDensityBulletSelector);
selectedOppositeBullet.style("fill", "White")
if(typeValue=="On") {
var selectedNodeCircles = d3.selectAll("#NODE");
selectedNodeCircles.transition().duration(500).attr("r", function(d){ return rRange(d.rSize); });
}
else {
var selectedNodeCircles = d3.selectAll("#NODE"); selectedNodeCircles.transition().duration(500).attr("r", function(d) { if (d.id==focalNodeID) { return centerNodeSize; } else { return defaultNodeSize; } } );
}
}
一切都很好,当您选择单选按钮时,您可以看到较慢的节点转换。但是,我现在想学习如何同时转换多个元素,例如半径和边长,以及这样做的背后的理论,以展示 D3 的动态特性。
我的问题是:鉴于我已经可以成功过渡圆的半径,我将如何过渡其他元素,如基于“alpha”、“摩擦”等属性的边长,以及......背后的理论是什么转换多个元素(换句话说,代码是什么意思,英文)?D3 API 似乎并没有清楚地进入同时转换多个属性背后的理论。