【问题标题】:d3.js, collapsible tree - how to connect different parents with same childd3.js,可折叠树 - 如何将不同的父母与同一个孩子联系起来
【发布时间】:2013-12-31 07:19:03
【问题描述】:

所以我使用http://bl.ocks.org/mbostock/4339083 来创建一个可折叠的树,效果很好。

现在问题是我有一些具有相同子节点的节点,所以我想知道是否有任何方法可以将图形可视化,使父节点都扩展到同一个子节点?

所以基本上当你扩展父节点时,它应该自动扩展另一个父节点的节点,导致相同的公共子节点,这对任何图形都可能吗?

【问题讨论】:

  • 也许collapsible force layout 更适合你?
  • 还是一样,两个父节点不展开为一个节点。 ViviD 在回复中表示,这不能由 d3 单独完成。
  • 它可以在 D3 中完成,只是不能使用现有的布局。不过,使用强制布局比使用树布局更容易实现。
  • stackoverflow.com/questions/20525458/… 我会试试这个,谢谢
  • X-jo 你能发布你的发现吗?

标签: javascript svg d3.js directed-acyclic-graphs


【解决方案1】:

根据您的描述,我猜您需要可视化有向无环图或 DAG。

树是:

A
|\
B C
 / \
D   E

DAG 是:

A
|\
B C
 \|
  D

而且,不,不幸的是,D3 树和集群布局根本不支持那种图表。他们的内部算法假设数据结构严格来说是一棵树。

但是,有一些选择。请参阅以下五个相关问题以了解可能的方法:

d3 tree - parents having same children

How to layout a non-tree hierarchy with D3

d3.js tree nodes with same parents

Layered graphs in d3.js

JS library for displaying direct acyclic graphs (DAGs)

【讨论】:

  • 正如您所说,我会研究这些方法并回复您,非常感谢您
  • 感谢您发布这些链接 VividD。对于访问此页面的其他人:据我所知,这些示例都没有涉及具有(非有向)循环的可折叠图,这是 OP 所询问的。有可用的可折叠树的良好 D3 示例(即没有节点有多个父节点),以及使用 D3 和其他有循环结构(包括多父“树”)的非树数据布局的良好示例图书馆。在树中折叠路径本质上比在非树图中折叠链接更简单;我没有找到后者的例子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多