D3js:绘制没有最外圈的包装布局

时间:2014-05-30 07:02:30

标签: javascript svg d3.js filter circle-pack

我正在尝试在没有最外层变量的d3.js中绘制包布局。 我想绘制一个没有最外面的父圆圈的包布局。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:5)

是的,有。我建议采用以下方法:保持所有循环包初始化完好无损。您只需更改实际将圆圈附加到DOM / SVG树的代码点。我将在几个例子中展示这一点。这个jsfiddle是"常规"的一个例子。圈包:

enter image description here

负责向DOM树添加圈子的关键代码是:

var circles = vis.append("circle")
    .attr("stroke", "black")
    .style("fill", function(d) { return !d.children ? "tan" : "beige"; })
    .attr("cx", function(d) { return d.x; })
    .attr("cy", function(d) { return d.y; })
    .attr("r", function(d) { return d.r; });

如果只在" vis"之间添加这一行。和" .append(" circle")" :(另一个jsfiddle可用here

.filter(function(d){ return d.parent; })

根节点将消失:

enter image description here

如果添加此行:

.filter(function(d){ return !d.children; })

除了离开节点之外的所有节点(换句话说,没有子节点的节点)将消失:

enter image description here

而且,有点复杂,这一行

.filter(function(d){ return (d.depth > 1); })

将使根父圆圈及其所有直接子项消失:

enter image description here