8
我有一個相當簡單的可視化,我試圖放在一起,但處理有一個小問題。爲什麼第一個鏈接項目被跳過?
如果我使用下面的代碼片段,然後一切正常:
var lines = svg.selectAll("line")
.data(data.links)
.enter()
.append("svg:line")
.attr("x1", function(d) { return findNode(data.nodes, d.source).x;})
.attr("y1", function(d) { return findNode(data.nodes, d.source).y;})
.attr("x2", function(d) { return findNode(data.nodes, d.target).x;})
.attr("y2", function(d) { return findNode(data.nodes, d.target).y;})
.style("stroke", "#838383")
.style("stroke-width", 1)
.style("marker-end", "url(#end-arrow)");
如果我轉不過這個使用稍微不同的一個,使用路徑:
var paths = svg.selectAll("path")
.data(data.links)
.enter()
.append("svg:path")
.attr("d", function(d) {
debugger;
var src = findNode(data.nodes, d.source);
var tgt = findNode(data.nodes, d.target);
var xi = d3.interpolateNumber(src.x, tgt.x);
var curvature = 0.8;
return "M" + src.x + "," + src.y
+ "C" + xi(curvature) + "," + src.y
+ " " + xi(1 - curvature) + "," + tgt.y
+ " " + tgt.x + "," + tgt.y;
})
.style("stroke", "#838383")
.attr("fill", "none");
然後由於某種原因,第一個'鏈接'缺失。任何人都可以提出爲什麼這可能是?有一個JSFiddle here。預期缺失的效果是,我沒有像我想要的那麼好的圓形線條。
輝煌 - 我永遠不會發現。作爲一個額外的功能,你知道是否有一種簡單的方法讓箭頭顯示在貝塞爾上嗎?我的垂直標記缺失... – Ian 2013-05-14 14:02:28
對不起,我的頭頂不是... – 2013-05-14 14:09:50