Javascript 在D3.js中将所有边的权重相加到一个节点?

Javascript 在D3.js中将所有边的权重相加到一个节点?,javascript,d3.js,Javascript,D3.js,我想求和连接到节点的所有边的权重,并将其用作节点得分?总和将是一个数组,在这个数组中,我需要将它们从具有更多边的最高节点排序到最低节点。 顺便说一下,我在D3中使用了强制布局 多谢各位 到目前为止: var sum=[] edges.style("stroke", function(d, i) { if ((d.source.name == node_name) || (d.target.name == node_name))

我想求和连接到节点的所有边的权重,并将其用作节点得分?总和将是一个数组,在这个数组中,我需要将它们从具有更多边的最高节点排序到最低节点。 顺便说一下,我在D3中使用了强制布局

多谢各位

到目前为止:

var sum=[]
            edges.style("stroke", function(d, i) {

                if ((d.source.name == node_name)  ||  (d.target.name == node_name))

                {   dataset.nodes.push(function(d){
                    //console.log(d.name)
                    return {sum:d.name}});

                    sum+= d.weight;
                    //console.log(d3.max(sum))
                    return  "#000"}
                else
                {
                    return "#ccc"}

            });

        })

当您使用
d3.json
加载数据时,一种方法是在加载数据后直接计算分数,而不是像在小提琴上那样单击。 如果数据的格式为,则以下代码将每个节点的分数存储为节点上的
score
属性。 可能您必须根据数据集调整属性名称
节点
链接
目标
分数

d3.json("assignments.json", function(error, graph) {
  graph.nodes = graph.nodes.map(function(node, index){
    node.score = graph.links
      .filter(function(d){
        return (d.source === index || d.target === index);
      })
      .map(function(d){
        return d.value;
      })
      .reduce(function(prev, curr){
        return prev + curr;
      },0);
    return node;
  });
/**
 * init force here
 */
});

我认为你应该发布更多的代码。也许是作为一个傻瓜?使用当前代码,我们无法看到数据集或节点名实际上是什么。
sum=[]
正在将总和转换为数组。然后在每个节点上向其附加d.weight字符串。这不太可能达到你想要的效果。为什么不从
sum=0
开始,然后从那里开始呢?@jhinzmann这是jsfiddle链接:即使是因为没有引用d3而没有显示的图形。是否有理由在单击时计算总和?在渲染图形之前,可能更容易计算每个节点的分数。同样没有
assignments.json
也很难知道那里发生了什么…我的回答对你有帮助吗?还是还有一些问题需要解决?