D3.js:为特定FDG节点将一个属性的值转移到另一个属性?

D3.js:为特定FDG节点将一个属性的值转移到另一个属性?,d3.js,force-layout,D3.js,Force Layout,我使用的是一个力有向图,它在每个节点上附加圆 作为节点创建的一部分,我首先将每个节点圆的半径“r”设置为默认且一致的值(defaultNodeSize=10)。这将成功绘制一个所有相关节点大小相同的集群 // Append circles to Nodes node.append("circle") .attr("x", function(d) { return d.x; }) .attr("y", function(d) { return d.y

我使用的是一个力有向图,它在每个节点上附加圆

作为节点创建的一部分,我首先将每个节点圆的半径“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应用于正在更改的特定节点的语法是什么。我会认为这有点像

selectedNodeCircles.("r", function(){ return this.attr("rSize"); });
换句话说,我想检索特定节点的“rSize”属性值,并将属性“r”设置为从“rSize”检索到的值

你知道正确的语法是什么吗


谢谢你能提供的任何帮助

您正在寻找
getAttribute()
函数

所以,类似这样的东西应该适合你:

selectedNodeCircles.attr(“r”,function(){返回this.getAttribute(“rSize”)})

请记住,函数中的
这个
是圆本身,因此,据我所知,它只是DOM中的一个元素

您只需在
结果
语句的前面使用
console.log(this)
打印出来即可确认这一点


希望这有帮助。

这很有效。非常感谢。我还了解到,另一种选择是确保rSize是原始数据集的一部分,绑定到每个节点。然后,它也可以是一种更为数据驱动的方法,例如“selectedNodeCircles.attr(“r”,function(d){return d.rSize;};”
selectedNodeCircles.("r", function(){ return this.attr("rSize"); });