【问题标题】:How to apply preferences to a d3.tree node如何将首选项应用于 d3.tree 节点
【发布时间】:2017-05-21 01:21:17
【问题描述】:

我已经改编了来自

的代码

https://bl.ocks.org/mbostock/4063550

为分层节点的整齐排列做出一个漂亮的数字。假设我在网页上有一个类似的flare.csv 文件。现在的代码根据节点是在内部圆上(这意味着节点有两个链接)还是在外圆上来分配颜色。

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

所有其他节点只能是黑色的。

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

【问题讨论】:

    标签: javascript html d3.js


    【解决方案1】:

    您可以在设置圆圈样式时检查父母和孩子:

    node.append("circle")
        .style("fill", function(d) {
            return !d.parent ? "blue" : d.children ? "red" : "black";
        })
        .attr("r", 2.5);
    

    这是您的更新 bl.ocks:https://bl.ocks.org/anonymous/696c1201ed63715753e76e480db343f0

    编辑:只为您指定的节点着色:

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

    这里是 bl.ocks:https://bl.ocks.org/anonymous/b55bc1e54414b4bbbfebee93ac6912a4

    【讨论】:

    • 亲爱的 Gerardo, 非常感谢您的解释。这肯定解决了我的主父节点“flare”的问题,因为它现在是蓝色的。但是对于子节点,看似您所做的只是改变了所有子节点的颜色,这些子节点也是父节点(有两个链接),即 d.children。第二部分不是我想要的。我实际上需要更改名称为“数据”的特定子节点的颜色,例如,它位于外圈上,即它只有一个链接。如果您能帮助我实现我的目标,我将不胜感激。谢谢。
    • 如果我的问题听起来很幼稚,我最诚挚的歉意。我是 JavaScript 新手。感谢您的理解。
    • 在这种情况下,只需将我的答案中的三级运算符更改为您想要的条件。除此之外,发布你的代码也是个好主意。
    • 我这样做了,但是除了 !d.parent 节点之外的所有节点都变黑了。我只是不知道我该怎么做。对不起。 node.append("circle") .style("fill", function(d) { return !d.parent ? "blue" : d.Data ? "red" : "black"; }) .attr("r" , 2.5);
    • 该数据结构中的任何节点都没有名称。我建议你明确说明你想要什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    相关资源
    最近更新 更多