分层边缘捆绑2种方式 - 链接颜色

时间:2014-12-04 19:28:51

标签: javascript svg d3.js colors bundle-layout

这是对这个问题的后续跟进: D3 Dynamic hierarchical edge bundling - 2 way import

原始问题已解决并显示在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,我的主要目的是将其应用于流程管理

任何指针都会有所帮助

1 个答案:

答案 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。和演示屏幕动画:

enter image description here