Javascript 在D3.js中将所有边的权重相加到一个节点?
我想求和连接到节点的所有边的权重,并将其用作节点得分?总和将是一个数组,在这个数组中,我需要将它们从具有更多边的最高节点排序到最低节点。 顺便说一下,我在D3中使用了强制布局 多谢各位 到目前为止: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))
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
也很难知道那里发生了什么…我的回答对你有帮助吗?还是还有一些问题需要解决?