2014-01-09 78 views
0

我正在使用d3.js強制定向佈局實現有向圖可視化。請參閱:http://bl.ocks.org/d3noob/5155181如何找到指向特定節點的邊?

我的問題是,我試圖獲取指向節點的路徑,但我不知道如何開始。

此外,我無法理解箭頭頭是如何附着在首位:

// build the arrow. 
    svg.append("svg:defs").selectAll("marker") 
    .data(["end"])  // Different link/path types can be defined here 
    .enter().append("svg:marker") // This section adds in the arrows 
    .attr("id", String) 
    .attr("viewBox", "0 -5 10 10") 
    .attr("refX", 15) 
    .attr("refY", -1.5) 
    .attr("markerWidth", 6) 
    .attr("markerHeight", 6) 
    .attr("orient", "auto") 
    .append("svg:path") 
    .attr("d", "M0,-5L10,0L0,5"); 

    // add the links and the arrows 
    var path = svg.append("svg:g").selectAll("path") 
    .data(force.links()) 
    .enter().append("svg:path") 
    .attr("class", function(d) { return "link " + d.type; }) 
    .attr("marker-end", "url(#end)"); 

任何指針將不勝感激!

.attr("marker-end", "url(#end)"); 

這是說,在路徑的末端的標記(即,其指向的節點)應當與ID所定義的標記物修飾「:

回答

1

該標記由該線附結束「 - defs部分中的箭頭。

要找到指向節點的邊緣,this question應該會有所幫助。這個想法是遍歷所有的鏈接,並檢查它們是否與當前節點相關聯,在您的情況下是否是目標。這個代碼看起來像這樣(作爲一個鼠標懸停處理程序)。

node.on("mouseover", function(d) { 
    var pointing = links.filter(function(e) { return e.target == d; }); 
}); 
+0

嗨拉爾斯,非常感謝你的解釋!很有幫助!只是一個簡單的問題,「url(#end)」是什麼意思?我問的原因是因爲我也想讓箭頭分配給特定的鏈接。我檢查過HTML並且箭頭似乎不是元素的子元素。 – Mike

+0

'url(#end)'意思是「在ID結束的'defs'節找到元素。 –

相關問題