2014-12-04 32 views
1

这是在这个问题上后续: D3 Dynamic hierarchical edge bundling - 2 way import分层边缘捆绑2路 - 链路颜色

原始问题已解决并且在http://jsfiddle.net/w2rfwokx/1/ 所示即,存在的情况下,节点1和节点2都为橙色链路相互导入。但似乎与此分辨率的问题,这在http://jsfiddle.net/w2rfwokx/3/

所示。当节点1和节点2两者导入彼此这个新的数据集变得明显,并且当节点1被突出显示,节点2为橙色,这是它需要的方式,但链接不是。

enter image description here

我猜的代码没有考虑到复杂的数据集。在这种复杂的数据集,节点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

的联系并没有正确地标记为“两个” -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。并演示屏幕动画:

enter image description here