用点强制正交(垂直或水平)边缘
Posted
技术标签:
【中文标题】用点强制正交(垂直或水平)边缘【英文标题】:Forcing orthogonal (vertical or horizontal) edges with dot 【发布时间】:2013-02-17 23:10:44 【问题描述】:我想强制点仅显示节点之间的垂直或水平边缘。
我在Family tree layout with Dot/GraphViz的帖子中发现了类似的请求,但我不是在处理树,所以我希望有一个不插入额外节点的解决方案...
如果我构建以下图表:
有向图 G 样条=正交 A [形状=盒子] B [形状=盒子] C [形状=盒子] D [形状=盒子] A -> B A -> C B -> D C -> D我得到的是这样的:
但我想要一张这样的图表:
我怎样才能得到这样的渲染?
编辑:“样条线”属性似乎没有按预期工作......我做错了什么吗?
【问题讨论】:
【参考方案1】:您的语法似乎正确。当我运行它时,我得到正交边缘路由(各种):
你有哪个版本?
我问是因为正交边缘路由仅在 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
【讨论】:
我正在使用 graphviz 3.2.1 并且“正交”对我也不起作用:(。它看起来就像节点之间最短的直线。以上是关于用点强制正交(垂直或水平)边缘的主要内容,如果未能解决你的问题,请参考以下文章