这是对这个问题的后续跟进: D3 Dynamic hierarchical edge bundling - 2 way import
原始问题已解决并显示在http://jsfiddle.net/w2rfwokx/1/中 即节点1和节点2都相互导入时,存在橙色链接。但是这个解决方案似乎存在问题,这在http://jsfiddle.net/w2rfwokx/3/
中显示的新数据集中变得明显。当节点1和节点2都相互导入时,并且当节点1突出显示时,节点2为橙色,这是它需要的方式,但链接不是。
我猜这段代码没有考虑到复杂的数据集。在这个复杂的数据集中,节点1导入节点2,节点2导入节点1和节点3,节点3导入节点2.
我可以弄清楚这个代码块中唯一链接数组的构造需要改变
var unique_links = links.reduce(function(p,c) {
var index=p.map(function(d,i) { if(d.source===c.target && d.target===c.source) return i;}).shift();
if(!isNaN(index)) p[index].both=true; else p.push(c);
return p;
},[]);
虽然我很难看到有什么变化。我还在学习d3.js,我的主要目的是将其应用于流程管理
任何指针都会有所帮助
答案 0 :(得分:0)
链接未正确标记为“both”-directional。
此代码段不正确:
d.both = unique_links.filter(function(v) { if (v.source===d.source && v.target===d.target) return v.both; }).shift();
})
它应该是这样的:
d.both = unique_links.filter(function (v) {
if (v.source === d.target && v.target === d.source){
return v.both = d.both = true;
}
})
这是jsfiddle。和演示屏幕动画: