如何在D3强制布局中为类调用特定节点?

时间:2017-02-09 17:57:18

标签: javascript d3.js

这让我发疯了。这是我想为每个节点输入特定类的代码。所以这里它为所有节点分配"节点"但是我想以某种方式强制第一个节点被分配" node1"或者其他的东西。我一直在玩(d,i),但它不起作用。

以下是JSFiddle我一直在使用

   //add nodes and effects
var node = svg.selectAll("g.node")
    .data(json.nodes)
    .enter().append("g")        
    .attr("class", "node")
     .attr("class", "node")

1 个答案:

答案 0 :(得分:0)

您可以将节点类或ID应用为数据的函数:

而不是:

var node = svg.selectAll("g.node")
    .data(json.nodes)
    .enter().append("g")        
    .attr("class", "node")

将相同的类应用于所有节点,如上所述,您可以使用类似:

    var node = svg.selectAll("g.node")
    .data(json.nodes)
    .enter().append("g")        
    .attr("class", function(d,i) {return  "node-" + i; })

这里我等于当前节点在数据数组中的位置。因此,您将拥有以下类:node-0node-1node-2 ... d指的是绑定到节点的数据,您可以使用d.property访问其属性

因此,您可以使用数据的属性来定义类或ID:

    var node = svg.selectAll("g.node")
    .data(json.nodes)
    .enter().append("g")        
    .attr("class", function(d) { return  "node-" + d["property"]; })

var node = svg.selectAll("g.node")
    .data(json.nodes)
    .enter().append("g")        
    .attr("class", function(d) { return  "node-" + d.property; })