我想在 Graphviz 中生成以下图表:

由于此处解释的原因,此:
digraph
{
layout=dot;
rankdir="LR";
overlap = true;
node[shape=record, height="0.4", width="0.4"];
edge[dir=none];
A; B; C; D; E; F; G; H; I;
A -> B -> C;
D -> E -> F;
G -> H -> I;
edge[constraint=false];
A -> D -> G;
subgraph clusterX
{
label="Cluster 1";
A; B;
}
subgraph clusterY
{
label="Cluster 2";
E; F; H; I;
}
}
Run Code Online (Sandbox Code Playgroud)
产生这个:

对节点的出现顺序进行一些仔细调整后:
F; E; I; H; D; G; A; B; C;
Run Code Online (Sandbox Code Playgroud)
我得到了正确的结果。
虽然这有效,但我希望更直接地控制节点的放置,因此我尝试切换到 neato,以便可以使用 pos 强制节点位置:
graph g
{
layout=neato;
node[shape=record, height="0.4", width="0.4"];
edge[dir=none];
A [pos="1,3!"];
B [pos="2,3!"];
C [pos="3,3!"];
D [pos="1,2!"];
E [pos="2,2!"];
F [pos="3,2!"];
G [pos="1,1!"];
H [pos="2,1!"];
I [pos="3,1!"];
A -- B -- C;
D -- E -- F;
G -- H -- I;
A -- D -- G;
subgraph clusterX
{
label="Cluster 1";
A;
B;
}
subgraph clusterY
{
label="Cluster 2";
E; F; H; I;
}
}
Run Code Online (Sandbox Code Playgroud)
这给出了以下结果:

如何让 neato 在集群边界和集群内的节点之间添加填充(与 dot 的方式相同)?
我讨厌成为派对上的扫兴者,但我不认为固定位置和集群的整齐方法会成功。
集群支持取决于布局引擎 -并非所有引擎都以相同程度支持它:
请注意,无论好坏,簇子图都不是 DOT 语言的一部分,而只是某些布局引擎遵守的语法约定。
Neato似乎不是支持集群的引擎的一部分,虽然fdp支持neato之类的布局,但它不支持固定位置。
在上面链接的论坛条目中,ERG 在某些时候建议使用gvpr脚本来实现此目的 - 可能不是您想到的解决方案。
顺便说一句,该图不应该是有向图,我收到警告并将全部替换->为--.
| 归档时间: |
|
| 查看次数: |
6009 次 |
| 最近记录: |