pab*_*sso 5 dot graphviz neato
假设此代码使用neato:
graph sample {
layout=neato
overlap=false
splines=true
tailclip=false
headclip=false
A -- I
A -- J
A -- B
A -- H
A -- E
A -- K
B -- D
B -- C
B -- L
C -- M
C -- N
C -- O
D -- P
D -- Q
E -- R
F -- A
G -- F
H -- J
}
Run Code Online (Sandbox Code Playgroud)
这给了我们这个图:
我需要的是放置一个节点X
,始终固定在父节点以南的位置.即如果我把另一种关系A -- X
,X
应该总是放在南方A
.而且我并不关心其他所有事情的结局.
我已经查看了pos
属性,但它似乎不是解决方案,因为X
它不是真正处于固定位置,而是处于相对于他的关系的位置.
此外tailport
和headport
,但他们只能从边缘会出来/定义,但真的不影响节点的方向.
更新
一个额外的图像,使事情更清晰:
我不需要neato,但我不希望图形看起来像UD或LR点树,我不希望它是线性排序的.circo,fdp,sfdp,twopi也没关系.
小智 4
neato 程序支持多种模式,其中一种可能可以满足您的需求。特别是,如果设置 mode=ipsep,则可以指定在布局期间遵循的点状约束。例如,我采用您的图表并使用图表属性
mode=ipsep
diredgeconstraints=true
levelsgap=0.5
Run Code Online (Sandbox Code Playgroud)
第一个打开 ipsep 模式,第二个告诉模型支持点中的有向边缘,最后一个指定分离的强度。然后我将边缘目录属性设置为无
edge[dir=none]
Run Code Online (Sandbox Code Playgroud)
并添加一条边 A -- X [dir=1]
dir=1 表示该边缘应引起方向约束。如果我然后运行neato,我会得到附加的图片。
Graphviz 属性文档http://www.graphviz.org/content/attrs提供了有关这些属性的更多信息。