我有一个圆形包布局,它代表 json 文件中的一些数据。当我单击键盘上的左右箭头时,我希望更新包布局。我设法更新了圆圈的位置,但没有更新半径。你能看看下面的代码吗?我的圈子包并不是真正的分层,我的意思是我只有一个父级,id 为“coreCircle”的圈子,然后是里面的所有子级。
谢谢,RM
var pack = d3.layout.pack()
.value(function(d) {
return d.someField;
})
.children(
function children(d) {
return d.someArray;
});
var corevis = d3.select('#svgCoreGroup');
// Creating the circle packed core
var gNodes = corevis.data([json]).selectAll("g.node")
.data(pack.nodes, function(d) {return (d.children ? "coreCircle" : d.name)});
// Remove
gNodes.exit().remove()
// Update
corevis
.data([json]).selectAll("g.node")
.data(pack.nodes, function(d) {return (d.children ? "coreCircle" : d.name)})
.attr("class", function(d) { return d.children ? "node" : "leaf node"; })
.attr("id", function(d) { return d.children ? "coreCircle" : null; })
.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; })
.selectAll("circle")
.transition()
.duration(500)
.attr("r", function(d) { return d.children ? coreSize : d.r; });
var node = gNodes
.enter().append("g")
.attr("class", function(d) { return d.children ? "node" : "leaf node"; })
.attr("id", function(d) { return d.children ? "coreCircle" : null; })
.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });
node.append("circle")
.attr("r", function(d) { return d.children ? coreSize : d.r; })