Javascript 如何将首选项应用于d3.tree节点

Javascript 如何将首选项应用于d3.tree节点,javascript,html,d3.js,Javascript,Html,D3.js,我改编了一段来自 为分层节点的整齐排列制作一个漂亮的图形。假设我有一个与网页上类似的flare.csv文件。现在的代码根据节点是在内圈(这意味着节点有两个链接)还是在外圈上分配颜色 我想要的是为位于中心的点(父节点)指定一种特定的颜色(比如蓝色),该点的名称为flare。另外,我想为所有名为“sub”的外圈节点(只有一个连接)指定一种特定的颜色(比如红色) 所有其他节点只能为黑色 如何在HTML代码中实现我想要的内容?在设置圆的样式时,您可以检查父对象和子对象: node.append("ci

我改编了一段来自

为分层节点的整齐排列制作一个漂亮的图形。假设我有一个与网页上类似的flare.csv文件。现在的代码根据节点是在内圈(这意味着节点有两个链接)还是在外圈上分配颜色

我想要的是为位于中心的点(父节点)指定一种特定的颜色(比如蓝色),该点的名称为flare。另外,我想为所有名为“sub”的外圈节点(只有一个连接)指定一种特定的颜色(比如红色)

所有其他节点只能为黑色


如何在HTML代码中实现我想要的内容?

在设置圆的样式时,您可以检查父对象和子对象:

node.append("circle")
    .style("fill", function(d) {
        return !d.parent ? "blue" : d.children ? "red" : "black";
    })
    .attr("r", 2.5);
以下是您的更新bl.ocks:

编辑:仅为指定节点着色:

.style("fill", function(d){
    return !d.parent ? "blue" : d.data.id === "flare.vis.data" ? "red" : "black";
})

这是bl.ocks:

亲爱的杰拉尔多,非常感谢你的解释。这当然解决了我的主父节点“flare”的问题,因为它现在是蓝色的。但是对于子节点,看起来您所做的只是更改所有子节点的颜色,这些子节点也是父节点(有两个链接),即d.children。第二部分不是我想要的。我需要的实际上是更改一个特定子节点的颜色,例如,它的名称是“Data”,并且位于一个外圆上,即它只有一个链接。如果你能帮助我实现我的目标,我非常感激。谢谢。如果我的问题听起来很幼稚,我最诚挚的道歉。我是javascript新手。谢谢您的理解。在这种情况下,只需将我的答案中的第三运算符更改为您想要的条件。除此之外,发布您的代码也是一个好主意。我这样做了,但除了!d、 父节点变为黑色。我只是不知道该怎么做。很抱歉node.append(“circle”).style(“fill”,函数(d){return!d.parent?“blue”:d.Data?“red”:“black”}).attr(“r”,2.5);该数据结构中没有任何节点的名称。我建议你明确说明你想要什么。