0 [label="B"];-6ren">
gpt4 book ai didi

Graphviz 边缘不可辨别/边缘标签被覆盖

转载 作者:行者123 更新时间:2023-12-02 05:11:45 24 4
gpt4 key购买 nike

我已将问题简化为以下简单示例:

digraph {
subgraph {rank=same; 0 -> 1 -> 2;}
0 -> 2 [label="A"];
2 -> 0 [label="B"];
}

产生

enter image description here

虽然将 0、1 和 2 保持在同一等级(原始示例是在较大图的背景下),但我需要 A 和 B 边能够被辨别。即边缘与标签清晰匹配并且标签可读。

我想象的一个解决方案是使用指定的边缘连接上的端口

0:ne -> 2:nw [label="A"];
2:sw -> 0:se [label="B"];

但是这会产生

enter image description here

还有其他想法吗?我正在生成具有相同问题的更大图表,因此最佳解决方案不是完全临时手动放置边/标签。

编辑:生成的较大图表的(仍然简化的)示例如下。

digraph {
size = "6,8.5";
ratio = "fill";
node [shape = circle];
node [fontsize = 24];
edge [fontsize = 24];
{graph [rank=same]; edge[color=invis];1;}
{graph [rank=same]; edge[color=invis];2 -> 0 -> 3 -> 4;}
0 -> 0 [label="6: 0.1764"];
0 -> 4 [label="4: 0.1304"];
0 -> 3 [label="5: 0.1551"];
0 -> 2 [label="7: 0.1489"];
0 -> 1 [label="Z: 0.3893"];
4 -> 0 [label="6: 0.1237"];
4 -> 3 [label="5: 0.05201"];
4 -> 2 [label="7: 0.15 "];
4 -> 1 [label="Z: 0.4585"];
3 -> 0 [label="6: 0.1658"];
3 -> 4 [label="4: 0.13 "];
3 -> 3 [label="5: 0.1038"];
3 -> 2 [label="7: 0.1616"];
3 -> 1 [label="Z: 0.4388"];
2 -> 0 [label="6: 0.1661"];
2 -> 4 [label="4: 0.1295"];
2 -> 3 [label="5: 0.2078"];
2 -> 2 [label="7: 0.1406"];
2 -> 1 [label="Z: 0.356 "];
1 -> 0 [label="6: 0.1103"];
1 -> 4 [label="4: 0.2591"];
1 -> 3 [label="5: 0.1382"];
1 -> 2 [label="7: 0.08581"];
1 -> 1 [label="Z: 0.1906"];
}

这会产生:

enter image description here

在上面的更简单的示例中表现出相同的边缘/标签重叠问题。

其他说明:

  • 当同一秩子图中双向连接的节点对中间有一个节点时,就会出现此问题。这可能是发现错误的部分条件。
  • 无向图也存在此问题。

最佳答案

您可以使用 dir="both"colorList 到达那里。 .

digraph {
subgraph {rank=same; 0 -> 1 -> 2;}
0 -> 2 [dir="both", color="black:gray", labeldistance="2", headlabel="A", taillabel="B"];
}

结果如下:

using dir="both"

我必须使用labelDistance来防止“A”标签绘制在箭头顶部。不幸的是,我不知道如何单独更改头标签和尾标签的字体颜色,以便更清楚地了解哪个标签适用于哪个箭头。

关于Graphviz 边缘不可辨别/边缘标签被覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23308101/

24 4 0