gpt4 book ai didi

label - 如何防止边缘标签弄乱graphviz中的布局?

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

我有一个简单的垂直图,使用以下代码看起来漂亮且对称,没有任何标签:

digraph test_alignment
{
{rank=same; a -> b;}
a -> c;
b -> c;
c -> d;
d -> e;
d -> f;
{rank=same; e -> f;}
}

The initial graph

我想标记 A 和 B 之间的边缘以及 E 和 F 之间的边缘,对每个标签使用相同的字符串。我期待相同的输出,除了带有相同标签的更长的 A->B 和 E->F 边。

不幸的是,一旦我向这些边之一添加标签,总体布局看起来有点歪斜(如果我向 E->F 边添加标签,结果是相似的):
digraph test_alignment
{
{rank=same; a -> b [label="Label"];}
a -> c;
b -> c;
c -> d;
d -> e;
d -> f;
{rank=same; e -> f;}
}

The same graph with one label

我对 graphviz 非常陌生,并且根据 Stack Overflow 上的许多问题,我一直在尝试不同的秩和约束组合,我尝试使用集群来查看它是否可以独立地保持顶部和底部正确对齐,并尝试使用dot、ccomp、gvpack 和neato 的组合产生了类似的结果。

似乎总是可以归结为在具有相同等级的节点之间的边缘添加标签会影响这些节点以我尚不理解的方式定位的事实。

我是否遗漏了一些微不足道的东西,或者我是否在尝试一些我不应该做的事情而不是让 dot 做它的事情?

我使用的是 dot - graphviz version 2.36.0 (20140111.2315) 并且链接的图片仅使用 dot 生成(尽管我在使用时获得了类似的结果:
dot test_alignment.dot -Tpng -O

最佳答案

您可以尝试使用 xlabel 属性,连同 forcelabels如有必要。从描述来看:

... For edges, the label will be placed near the center of the edge. This can be useful in dot to avoid the occasional problem when the use of edge labels distorts the layout. ...

关于label - 如何防止边缘标签弄乱graphviz中的布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24955769/

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