如何在DOT文件中指定边缘向上

dsp*_*pyz 2 graph dot graphviz

我想呈现一个有向图,如:

    A
   ^ ^
  /   \
 /     \
B       C
Run Code Online (Sandbox Code Playgroud)

但是,无论我以何种顺序排列语句,dot都坚持生成如下图像:

B       C
 \     /
  \   /
   v v
    A
Run Code Online (Sandbox Code Playgroud)

我试过指定端口,但是然后边缘就包起来了。它不会更改节点的位置。

小智 5

解决方案是rankdir

digraph G {
 rankdir="BT"
 B->A
 C->A
}
Run Code Online (Sandbox Code Playgroud)


vae*_*hen 5

rankdir如果您想从下到上构建整个图表,这是解决方案。更灵活的方法是只告诉边缘向后指向:

digraph G
{
    A -> B[ dir = back ];
    A -> C[ dir = back ];
}
Run Code Online (Sandbox Code Playgroud)

产量

在此输入图像描述

你也可以写

A -> { B C }[ dir = back ];
Run Code Online (Sandbox Code Playgroud)

或者您可以给出此指令后定义的所有边的一般指令以指向向后:

edge[ dir = back ];
Run Code Online (Sandbox Code Playgroud)

这可以通过以下方式撤消

edge[ dir = forw ];
Run Code Online (Sandbox Code Playgroud)

因此,

digraph G
{
    edge[ dir = back ];
    A -> B;
    A -> C;
    edge[ dir = forw ];
    { B C } -> D;
}
Run Code Online (Sandbox Code Playgroud)

产量

在此输入图像描述