相关疑难解决方法(0)

在Graphviz中,如何将边缘与节点的顶部中心对齐?

在Graphviz/dot中,是否可以将边缘准确地连接到节点的顶部中心?阅读点指南,我想,tailportheadport会帮助我,但添加这些没有区别,有时让我更奇怪的结果.

这就是我得到的:

样本图

这就是我要找的东西:

想要的结果

我用来获取(不正确)图表的代码是:

digraph G {

  graph [splines = ortho];
  node [shape = box];
  edge [dir = none];

  {
    rank = same

    A
    AB [shape = point]
    B

    A -> AB
    AB -> B
  }

  {
    rank = same
    point1 [shape = point]
    point2 [shape = point]
    point3 [shape = point]
  }

  AB -> point1

  // The following section if to make the nodes appear in 
  // the correct order, not sure if there's a …
Run Code Online (Sandbox Code Playgroud)

dot graphviz

5
推荐指数
2
解决办法
4776
查看次数

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

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

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

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

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

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

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

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

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

algorithm tree data-visualization family-tree directed-acyclic-graphs

5
推荐指数
1
解决办法
930
查看次数