sky*_*ork 3 layout positioning dot graphviz dot2tex
我是 graphviz 的新手,只是想知道如何确定图中的相对节点定位。例如,如果我想绘制一个简单的三角形“abc”,节点“a”在顶部,节点“b”和“c”在底部的同一层,我应该如何告诉graphviz布局根据需要节点?
我尝试了以下方法:
graph G
{
node [shape="circle"];
edge [lblstyle="auto"];
{rank=min; "a"}
a -- b [label = "-"];
a -- c [label = "-"];
{rank=same; "b" "c"}
b -- c [label = "+"];
}
Run Code Online (Sandbox Code Playgroud)
但输出将节点 'a' 和 'b' 置于顶部的同一级别,节点 'c' 位于底部。
此外,是否可以在同一个图形中并排绘制两个这样的三角形(中间有一个合适的空间)?如果是,它是如何实施的?
非常感谢。
但输出将节点 'a' 和 'b' 置于顶部的同一级别,节点 'c' 位于底部。
我实际上得到了 a 在顶部,居中在 b 和 c 上方(见图)。
您的标记略有简化(什么是lblstyle?),当用点渲染时,似乎达到了您想要的效果:
graph G
{
node[shape=circle];
a -- b [label = "-"];
a -- c [label = "-"];
{rank=same; b -- c [label="+"];}
}
Run Code Online (Sandbox Code Playgroud)

你使用什么版本的graphviz?
并排有两个三角形:
graph G
{
node[shape=circle];
edge[label="-"];
a -- b;
a -- c;
{rank=same; b -- c [label="+"];}
d -- e;
d -- f;
{rank=same; e -- f [label="+"];}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果事情变得更复杂,可能很难让 graphviz 完全按照自己的意愿布局所有内容。这实际上是 graphviz 的优势 - 应用布局算法以避免用户干预。