在我的代碼中,我嘗試根據我的d3應用程序中的條件鏈接幾個svg rect元素和箭頭(svg標記)。 rects創建沒有任何問題,但沒有箭頭產生。但類似的方法正在我的其他例子。 這裏是我的代碼:在D3箭頭不根據條件調用
var rect = canvas.selectAll("rect")
.data(data)
.enter()
.append("rect")
.filter(condition)
.attr("class", function(d) { return d.children ? "parent" : "child"; })
.attr("x", function(d) { return d.x + 20 ; })
.attr("y", function(d) { return d.y + 30 ; })
.attr("width", 30)
.attr("height", 30)
.attr("opacity", 0.25);
的箭頭代碼和行:
//Create definition for arrowhead:
rect.append("defs").append("marker")
.attr("id", "arrowhead")
.attr("viewBox", "0 -5 10 10")
.attr("refX", 0)
.attr("refY", 0)
.attr("markerUnits", "strokeWidth")
.attr("markerWidth", 6)
.attr("markerHeight", 6)
.attr("orient", "auto")
.append("path")
.attr("d", "M0,-5L10,0L0,5");
....
// Connecting the arrow and the line (not working)
rect.selectAll("rect").append("line")
.filter(condition)
.attr("x1", function(d) { getting x1 values })
.attr("y1", function(d) {getting y1 values })
.attr("x2", function(d) {getting x2 values)
.attr("y2", function(d) {getting y2 values)
.attr("stroke", "black")
.attr("stroke-width", 1.5)
.attr("marker-end", "url(#arrowhead)")
.attr("fill", "none");
任何想法將如何產生所有箭頭..
'defs'元素需要附加到SVG,而不是'rect'元素。 – 2014-11-25 14:57:24
我也做了改變,但現在只有一個箭頭顯示不是全部。現在當我檢查我的過濾器作爲控制檯輸出它顯示正確的過濾器... – Kal 2014-11-25 15:39:40
這是我的代碼,當我從代碼調用它時,它給了我最後一個值(這是否是此問題的原因)..代碼是獲取rect的座標:var getSize; var rectPos = document.getElementsByTagName(「rect」);對於(i = 0; i
Kal
2014-11-25 15:47:18