Tôi đã có một hình ảnh khá đơn giản Tôi đang cố gắng để cùng nhau, nhưng có một vấn đề nhỏ với việc xử lý.Tại sao mục Liên kết đầu tiên bị bỏ qua?
Nếu tôi sử dụng đoạn mã sau đây sau đó tất cả mọi thứ công trình như mong đợi:
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)");
Nếu tôi chuyển đổi này tuy nhiên để sử dụng một hơi khác nhau, sử dụng đường dẫn:
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");
Sau đó, vì một lý do 'liên kết' đầu tiên bị thiếu. Bất cứ ai có thể đề nghị tại sao điều này có thể được? Có một JSFiddle here. Hiệu ứng mong đợi là mất tích, là tôi không có những đường tròn đẹp như tôi muốn.
Tuyệt vời - Tôi sẽ không bao giờ tìm thấy điều đó. Bạn có biết thêm liệu có cách nào dễ dàng để có được mũi tên hiển thị trên beziers không? Điểm đánh dấu dọc của tôi bị thiếu ... – Ian
Xin lỗi, không phải trên đỉnh đầu của tôi ... –