【问题标题】:How to differentiate inner and leaf (final) nodes in a D3 dendogram如何区分 D3 树状图中的内部和叶(最终)节点
【发布时间】:2023-03-09 21:18:02
【问题描述】:

我使用 D3.js 生成树状图,用户将在其中看到聚类结果。但是,为了保持显示干净,我希望父节点尽可能简单(没有文字,没有圆圈)。

这是数据当前的显示方式:http://i.imgur.com/Cz52Fhl.png

这是我希望它显示的示例(方向无关紧要,重要的是内部节点没有文字或圆圈):http://i.imgur.com/Oo2A0b7.png

代码...

// Compute the new tree layout.
      var nodes = tree.nodes(root).reverse(),
          links = tree.links(nodes);

      // Normalize for fixed-depth.
      nodes.forEach(function(d) { d.y = d.depth * 130; });

      // Update the nodes…
      var node = svg.selectAll("g.node")
          .data(nodes, function(d) { return d.id || (d.id = ++i); });

      // Enter any new nodes at the parent's previous position.
      var nodeEnter = node.enter().append("g")
          .attr("class", "node")
          .attr("transform", function(d) { return "translate(" + source.y0 + "," + source.x0 + ")"; })
          .on("click", click);

      nodeEnter.append("circle")
          .attr("r", 1e-6)
          .style("fill", function(d) { return d._children ? "lightsteelblue" : "#fff"; });

      nodeEnter.append("text")
          .attr("x", function(d) { return d.children || d._children ? -10 : 10; })
          .attr("dy", ".35em")
          .attr("text-anchor", function(d) { return d.children || d._children ? "end" : "start"; })
          .text(function(d) { return d.canonical; })
          .style("fill-opacity", 1e-6);

【问题讨论】:

    标签: d3.js hierarchical hierarchical-clustering


    【解决方案1】:

    您是否希望能够在叶节点(最右边的那些)旁边添加标签,而任何中间节点都没有标签?

    如果是,有一个活生生的例子:http://bl.ocks.org/widged/5150104

    节点是inner类型还是leaf类型由这部分代码定义

      .enter().append("svg:g")
            .attr("class", function(n) {
              if (n.children) {
                return "inner node"
              } else {
                return "leaf node"
              }
            })
    

    以后

    var endnodes =  vis.selectAll('g.leaf.node')
        .append("svg:text")
        ... skipping attributes ...
        .text(function(d) { return d.data.name; });
    

    【讨论】:

    • 哦,是的,但是我使用的是 Clusterfck JS 库,并且非常有限,并且完全不默认生成信息。我有这个问题。知道 JavaScript 或 PHP 中实现了这些算法(例如欧几里得距离和马氏距离)的其他库吗?
    • 对于欧几里得距离,请查看 encog - codeproject.com/Articles/477689/…
    • 如果可以的话,请在这个问题上帮助我link
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 2018-10-06
    • 2019-07-15
    • 2017-05-01
    • 1970-01-01
    相关资源
    最近更新 更多