我一直在寻找一种从径向Tilford树中删除根节点的方法,但到目前为止还没有运气。我发现了一个类似的问题here,但提供的答案并不具体,无法完全理解我需要使用d.depth > 0
的位置。我试图在有意义但不成功的位置添加这行代码(例如node.append和.data(nodes))。附件的片段类似于@JSBob在另一个问题中所指的位置,任何方向都会有所帮助,因为我是D3的新手!
function createVisualization(root){
//if (error) throw error;
drawLegend();
var nodes = tree.nodes(root),
links = tree.links(nodes);
console.log(nodes);
var link = svg.selectAll(".link")
.data(links)
.enter().append("path")
.attr("class", "link")
.attr("d", diagonal);
var node = svg.selectAll(".node")
.data(nodes)
.enter().append("g")
.attr("class", "node")
.attr("transform", function(d) {
return "rotate(" + (d.x - 90) + ")translate(" + d.y + ")"; })
.on("mouseover", mouseOverArc)
.on("mousemove", mouseMoveArc)
.on("mouseout", mouseOutArc);
node.append("circle").attr("r", 5)
.style("fill", function(d) {
if(d.size == 0) {
return "#8c6226"; //Brown
} else if(d.size == 1){
return "#DC143C"; //Crimson
} else if(d.size == 2){
return "#FFA500"; //Orange
} else if(d.size == 3){
return "#32CD32"; //LimeGree
} else if(d.size == 4){
return "#1E90FF"; //DodgerBlue
}
;})
答案 0 :(得分:0)
@JSBOB说的是,当您为根节点创建圆圈时,请将其半径设置为0,如下所示:
node.append("circle")
.attr("r", function(d) {
if (d.depth == 0) {//for root node depth will be 0
return 0;//make the circle's radius 0 for root node.
} else {
return 4.5;
}
}).style("fill", function(d) { ... });
工作样本here
答案 1 :(得分:0)
使用:
var link = svg.selectAll(".link")
.data(links)
.enter().append("path")
.filter(function(d) { return d.source.depth != 0})
.attr("class", "link")
.attr("d", diagonal);
删除指向根节点的链接
var node = svg.selectAll(".node")
.data(nodes)
.enter().append("g")
.filter(function(d) { return d.depth != 0})
.attr("class", "node")
.attr("transform", function(d) { return "rotate(" + (d.x - 90) + ")translate(" + d.y + ")"; })
删除根节点