graphviz - 用点强制正交(垂直或水平)边缘

标签 graphviz dot edges orthogonal

我想强制点仅显示节点之间的垂直或水平边缘。

我在帖子 Family tree layout with Dot/GraphViz 中发现了类似的请求,但我不处理树,所以我希望有一个解决方案,无需插入额外的节点...

如果我构建以下图表:

digraph G {

    splines=ortho

    A [ shape=box ]
    B [ shape=box ]
    C [ shape=box ]
    D [ shape=box ]

    A -> B
    A -> C

    B -> D
    C -> D

}

我得到的是这样的:

enter image description here

但我想要一个像这样的图表:

enter image description here

怎样才能得到这样的渲染效果?

编辑:“样条线”属性似乎没有按预期工作...我做错了什么吗?

最佳答案

你的语法似乎是正确的。当我运行它时,我得到正交边缘路由(某种):

enter image description here

你有哪个版本?

我问这个问题是因为正交边缘路由仅在 2010 年 9 月 28 日及更新版本的 Graphviz 版本中可用。并非所有系统都包含更新的版本。在我的系统上我必须 download并手动安装 Graphviz 以获取高于 2.26.3 的版本(自 2010 年 1 月 26 日起)。

假设您的实际图表包含超过 4 个节点,如果您希望线条有弯曲并且不想添加额外的(不可见)节点,您应该尝试使用 图表 nodesep 属性。请参阅下面的代码和图像。

digraph G {

    graph [splines=ortho, nodesep=1]
    node [shape=record]

    A -> {B, C} -> D
}

enter image description here

关于graphviz - 用点强制正交(垂直或水平)边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15191811/

相关文章:

Graphviz - 什么是有效的样式属性?

c++ - 从 Qt 应用程序运行命令行点程序不会产生任何输出,这是怎么回事?

r - 如何根据边缘值选择网络对象中的节点?

r - 使用 R 简单转换为边缘列表?

python - 社交图: Pandas dataframe to Networkx graph

graphviz - 改进 graphviz 布局

graphviz - 导入 .dot 文件作为子图

java - 如何在单个顶点上绘制具有多条边的图(例如允许循环)?

python - 使用 NetworkX/PyGraphviz 绘制多重图 : fine tuning node/edge position

binary-search-tree - 如何从 C++ 为 Graphviz 生成二叉树点文件