具有分层布局的有向无环图

ink*_*994 5 algorithm tree data-visualization family-tree directed-acyclic-graphs

我正在尝试以编程方式构建家谱。我不在乎输入数据的格式,因为文本很容易解析(我是 NLP 研究人员),但是我在弄清楚如何构建(显示)树时遇到了麻烦。以下是我的问题:

  1. 家谱不是树。树是一种结构,其中每个子节点都只有一个父节点。家谱实际上是有向无环图 (DAG)。
  2. 有许多库可以生成 DAG,但这些可视化不是静态的,而且它们通常看起来并不令人愉快。一些例子:

    • Kingraph通常会做我想要的,但它无法绘制看起来不断开和不干净的边缘。
    • 后代树看起来很神奇,但严格来说它是一棵树,而不是 DAG。我玩过把它变成 DAG,但我认为这是不可能的。
    • Graphviz可以完全满足我的要求,但我无法让它从父级到子级的中心绘制边缘(请参阅我之前的问题)。

总之,我需要一个框架来:

  1. 解析家谱数据,
  2. 从数据构建 DAG,
  3. 并生成具有分层布局的 DAG SVG,因此它在视觉上看起来像一棵树。

我知道我将无法找到可以完成所有三个任务的东西(我已经花了两周的时间进行搜索),但是我希望找到可以完成后者的东西,或者至少可以帮助开发一种算法来做到这一点。在这一点上,我不在乎是否需要学习一门全新的语言才能做到这一点。我要求很多,但是您可以发送给我的任何资源、图书馆或建议都会有很大帮助。

免责声明不是在寻找以下任何一项:

我只是在寻找进行分层布局的算法。谢谢!

Gru*_*uff 0

如果有人遇到这个问题并且仍然需要解决方案:Graphviz 支持基于记录和用户定义的节点形状,这使您可以完全控制如何渲染图形。请参阅: https: //graphviz.org/doc/info/shapes.html#html