Tôi đang làm việc trên đồ thị có lực tác động trong D3. Tôi muốn làm nổi bật nút mouseover'd, các liên kết của nó và các nút con của nó bằng cách đặt tất cả các nút và liên kết khác thành độ mờ thấp hơn.Đánh dấu nút đã chọn, liên kết của nó và các nút con của nó trong đồ thị D3 hướng đạo lực
Trong ví dụ này, http://jsfiddle.net/xReHA/, tôi có thể làm mờ tất cả các liên kết và nút rồi mờ dần trong các liên kết được kết nối, nhưng cho đến nay, tôi không thể mờ nhạt một cách thanh lịch trong các nút được kết nối. của nút mouseover'd hiện tại.
Đây là chức năng quan trọng từ các mã:
function fade(opacity) {
return function(d, i) {
//fade all elements
svg.selectAll("circle, line").style("opacity", opacity);
var associated_links = svg.selectAll("line").filter(function(d) {
return d.source.index == i || d.target.index == i;
}).each(function(dLink, iLink) {
//unfade links and nodes connected to the current node
d3.select(this).style("opacity", 1);
//THE FOLLOWING CAUSES: Uncaught TypeError: Cannot call method 'setProperty' of undefined
d3.select(dLink.source).style("opacity", 1);
d3.select(dLink.target).style("opacity", 1);
});
};
}
Tôi nhận được một lỗi Uncaught TypeError: Cannot call method 'setProperty' of undefined
khi tôi cố gắng để thiết lập opacity trên một yếu tố tôi tải từ source.target. Tôi nghi ngờ đây không phải là cách thích hợp để tải nút đó như một đối tượng d3, nhưng tôi không thể tìm cách khác để tải nó mà không cần lặp lại tất cả các nút một lần nữa để tìm các nút khớp với mục tiêu hoặc nguồn của liên kết. Để giữ hiệu suất hợp lý, tôi không muốn lặp lại tất cả các nút hơn mức cần thiết.
Tôi lấy ví dụ về mờ dần các liên kết từ http://mbostock.github.com/d3/ex/chord.html:
Tuy nhiên, điều đó không cho thấy làm thế nào để thay đổi các nút con được kết nối.
Bất kỳ gợi ý tốt về cách giải quyết hoặc cải thiện này sẽ được bỏ phiếu tán dữ dội :)
Điều đó hoạt động tốt @mbostock, cảm ơn bạn rất nhiều: D Tôi đã cập nhật [jsfiddle] (http://jsfiddle.net/xReHA/1/) với giải pháp của bạn. –
Đã xóa một cuộc gọi không cần thiết để tạo kiểu trên liên kết: http://jsfiddle.net/xReHA/2/ –
Mike, giải pháp đó đơn giản là đẹp. Chỉ cần nói. – Vivek