Tôi đã truy cập add and remove nodes in D3js nhưng nó không giải quyết được sự cố của tôi.Cách xóa các nút hiện có trong d3.js
Có một số nút ở lần đầu tiên, sau đó tôi muốn thêm nút động và muốn nếu nút đã tồn tại, cập nhật các nút đó và không sao chép.
hiện tại, tính năng này đang tạo bản sao chứ không cập nhật những cái hiện có.
Đây là mã chính và mã đầy đủ và fiddle làm việc là here
//handles node elements
var circles = svg.selectAll('g');
//update graph (called when needed)
function restart() {
/***************************************
Draw circles (nodes)
****************************************/
circles = circles.data(data.nodes);
var g = circles.enter()
.append("g")
.attr("class", "gNode")
.attr("cursor", "pointer")
.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; })
.call(force.drag);
g.append("circle")
.attr({
"class": "node",
"cx": function(d) { return rScale(d.NumOccurrences); },
"cy": function(d) { return rScale(d.NumOccurrences); },
"r": function(d) { return rScale(d.NumOccurrences); }
})
.style("fill", function(d, i) { return colors(i); })
.style("stroke", "#000");
g.append("text")
.attr({
"x": function(d) { return rScale(d.NumOccurrences); },
"y": function(d) { return rScale(d.NumOccurrences); },
"font-family": "sans-serif",
"font-size": "20px",
"fill": "black",
"text-anchor": "middle"
})
.text(function (d) { return d.name; });
g.append("title")
.text(function(d) { return d.name; });
// remove old nodes
circles.exit().remove();
// set the graph in motion
force.start();
}
// app starts here
restart();
function dynamicAddNodes() {
var updatedata = {"name":"ios","NumOccurrences":"500","color":"green","x":0,"y":1}
data.nodes.push(updatedata);
restart();
}
setInterval(dynamicAddNodes, 10000);
Cảm ơn bạn đã trả lời. Hãy để tôi giải thích cho bạn những gì tôi muốn làm. ** muốn cập nhật bán kính của các nút hiện có và thêm các nút mới ** ** 1 ** Đây là những từ khóa được lưu trữ trong cơ sở dữ liệu. ** 2 ** lần đầu tiên nó hiển thị 20 nút và kích thước bán kính dựa trên số lần từ khóa này tồn tại trong cơ sở dữ liệu. ** 3 ** Bây giờ từ khóa mới có trong cơ sở dữ liệu hoặc một số từ khóa trùng lặp được thêm vào. ** 4 ** bây giờ sau 10 giây tôi gọi đến cơ sở dữ liệu và truy xuất từ khóa và muốn cập nhật bán kính của các nút hiện có và thêm các nút mới –
Hãy xem http://bl.ocks.org/mbostock/3808218. Nó cho thấy mô hình cập nhật chung trong d3, với hai ví dụ tiếp theo cho thấy làm thế nào để làm dữ liệu và chuyển tiếp khóa. Về cơ bản, những gì bạn sẽ làm là chỉ định điều gì sẽ xảy ra khi dữ liệu nhập, rời và thay đổi. Bạn sẽ cần một hàm xác định các hành vi này và sau đó gọi hàm đó mỗi khi bạn cập nhật dữ liệu của mình. – ckersch