如何计算D3 v5中的节点度?

时间:2019-02-01 00:00:52

标签: d3.js

我正在学习D3,并尝试根据D3 v5中节点的程度缩放节点的半径。我的代码就像

 nodes.forEach(function(d){
        d.degree=0;});
links.forEach(function(d){
        nodes[d.source].degree += 1;
        nodes[d.target].degree += 1;});

返回错误

Uncaught TypeError: nodes.forEach is not a function

任何人都可以提供一个好的解决方案?

1 个答案:

答案 0 :(得分:0)

类似的方法适用于d3.js V5:

// Add degree 
d3.selectAll('g.node')
  .each(function(d) {
    d.degree = 0;
  });

// Calculate degree
links.forEach(function(d){
    d.source.degree += 1;
    d.target.degree += 1;
  });

// Accessor functions to get min & max
var minDegree = d3.min(
  d3.values(nodes), function(d) {
    return d.degree; })

var maxDegree = d3.max(
  d3.values(nodes), function(d) { 
    return d.degree; })

// Create node scale based on degree
var nodescale = d3.scaleSqrt()
  .domain( [minDegree, maxDegree] )
  .range( [3, 15] ); // Change this to your desired range

// Add the node circles
node.append("circle")
    .attr("r", function(d) {
      return nodescale(d.degree);
    })