我正在使用一个力有向图,将圆圈附加到每个节点。
作为节点创建的一部分,我首先将每个节点圆的半径“r”设置为默认且一致的值(defaultNodeSize = 10)。这成功地绘制了一个所有相关节点大小相同的集群。
// Append circles to Nodes
node.append("circle")
.attr("x", function(d) { return d.x; })
.attr("y", function(d) { return d.y; })
.attr("r", function(d) { if (d.id==focalNodeID) { return centerNodeSize; } else { return defaultNodeSize; } } ) // <---------------------------- Radius "r" set HERE!!!!
.style("fill", "White") // Make the nodes hollow looking
.attr("type_value", function(d, i) { return d.type; })
.attr("color_value", function(d, i) { return color_hash[d.type]; })
.attr("rSize", function(d, i) { return d.rSize; }) // <------------------ rSize HERE!!!!
.attr("id", "NODE" )
.attr("class", function(d, i) {
var str = d.type;
var strippedString = str.replace(/ /g, "_")
//return "nodeCircle-" + strippedString; })
if (d.id==focalNodeID) { return "focalNodeCircle"; }
else { return "nodeCircle-" + strippedString; }
})
.style("stroke-width", 5) // Give the node strokes some thickness
.style("stroke", function(d, i) { return color_hash[d.type]; } ) // Node stroke colors
.call(force.drag);
此外,在创建时,我设置了一个名为“rSize”的属性,它指定了该节点的绝对大小。每个节点都有不同的 rSize,并且 rSize 与 defaultNodeSize 不同。rSize 的目的是让我以后可以访问它,并根据控制器动态地将圆的半径从它的 defaultNodeSize 更改为它的 rSize(或相反),从而允许每个节点扩展或收缩。
在一个单独的控制器函数中,我稍后会选择要应用新 rSize 的所有节点。选择它们很容易...
var selectedNodeCircles = d3.selectAll("#NODE");
但是,我不知道读取每个节点的 rSize 并将 rSize 应用于正在更改的特定节点的语法是什么。我会认为这就像...
selectedNodeCircles.("r", function(){ return this.attr("rSize"); });
换句话说,我想检索该特定节点的“rSize”属性值并将属性“r”设置为从“rSize”检索到的值。
知道正确的语法是什么吗?
谢谢你尽你所能的帮助!