gpt4 book ai didi

graphviz - 点中的子图聚类排名

转载 作者:行者123 更新时间:2023-12-04 00:51:17 25 4
gpt4 key购买 nike

我正在尝试在 media wiki 上使用 graphviz 作为软件的文档工具。

首先,我记录了一些运行良好的类关系。一切都按预期垂直排列。

但是,我们的一些模块是 dll,我想将它们分成一个盒子。当我将节点添加到集群时,它们会变得边缘化,但集群似乎有 LR 排名规则。或者被添加到集群会破坏节点的 TB 排名,因为集群现在出现在图表的一侧。

这张图代表了我正在尝试做的事情:目前,cluster1 和 cluster2 出现在 cluster0 的右侧。

我希望/需要它们出现在下面。

<graphviz>
digraph d {
subgraph cluster0 {
A -> {B1 B2}
B2 -> {C1 C2 C3}
C1 -> D;
}
subgraph cluster1 {
C2 -> dll1_A;
dll1_A -> B1;
}
subgraph cluster2 {
C3 -> dll2_A;
}
dll1_A -> dll2_A;
}
</graphviz>

最佳答案

布局是 Dot 尝试最小化整体高度的一种尝试。

比所需布局更紧凑的一个原因是使用了与 反向的边缘。 dll1_a B1 .它尝试将集群拉回尽可能靠近目标节点的位置。为避免此边缘影响图形,请放松 约束 如图所示,在向上的边缘上,或向前绘制边缘并使用 目录 属性来反转箭头。

这将有助于许多布局,但仅靠它不足以修复给出的示例。为了防止 Dot 保持它喜欢的紧凑布局,您可以添加 敏伦 归因于应保持(接近)垂直的边缘。这通常可能难以计算,但对于手动调整的布局是实用的。

digraph d {
subgraph cluster0 {
A -> {B1 B2}
B2 -> {C1 C2 C3}
C1 -> D;
}
subgraph cluster1 {
C2 -> dll1_A [minlen = 2];
dll1_A -> B1 [constraint = false];
/* B1 -> dll1_A [dir = back]; */
}
subgraph cluster2 {
C3 -> dll2_A;
}
dll1_A -> dll2_A;
}

Corrected layout

关于graphviz - 点中的子图聚类排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2499032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com