子图和集群中“rank = same”的问题

问题描述 投票:1回答:1

当从“普通”子图切换到集群时,qazxsw poi似乎不再起作用了。

要显示我的问题,请查看以下示例图表。

rank=same

输出如下图所示。我希望它不会太混乱,因为我使用了一些图像作为节点。我创建了两个子图,每个子图对两个节点进行分组,并将它们放在同一个等级上。一个子图位于中心顶部,另一个子图位于中心底部。

digraph INV_X1 { rankdir = "LR"; edge [penwidth="2"]; /* Component styles */ M_i_0 [shape=none;image="res/nmos.jpg"]; M_i_1 [shape=none;image="res/pmos.jpg"]; /* Node styles */ A [style=filled;color=green]; ZN [style=filled;color=green]; /* Connections */ M_i_0:n -> ZN; A -> M_i_0:w; /* Put M_i_0 and _VSS_0 on the same rank. */ subgraph g_VSS_0 { rank=same; label="_VSS_0"; _VSS_0 [shape=none;image="res/gnd.jpg";label=""]; M_i_0 -> _VSS_0 [arrowhead=none]; } M_i_1:s -> ZN; A -> M_i_1:w; /* Put M_i_1 and _VDD_1 on the same rank. */ subgraph g_VDD_1 { rank=same; label="_VDD_1"; _VDD_1 [shape=none;image="res/pwr.jpg";label=""]; _VDD_1 -> M_i_1 [arrowhead=none]; } }

现在我想从子图切换到集群以确保分组的节点总是彼此靠近放置,并且我希望有边框和标签来使集群可见。但是,当我只是将子图名称更改为“cluster _...”时,它看起来像这样。

Graph with subgraphs

这里有什么问题?为什么Same graph with clusters不再按预期工作?此外,给定的端口位置不再按预期工作(边缘不再连接在节点的南/北)。

我试图将rank=same从集群中拉出一个自己的语句,但这似乎完全覆盖了之前的集群语句,因为边框和标签消失了。此外,我尝试在节点连接上使用rank=same,但这会扰乱节点顺序,所以我对这种方法并不满意。

任何帮助表示赞赏。如果要重新创建图形,可以找到使用过的图像constraint=false

graphviz dot
1个回答
2
投票

你是对的,因为文档here,“rank”属性只适用于子图(cluster不再是子图)。但问题是什么,将另一个子图放入群集中!

states

还要注意我已经改变了你的边缘digraph INV_X1 { rankdir = "LR"; edge [penwidth="2"]; /* Component styles */ M_i_0 [shape=none;image="res/nmos.jpg"]; M_i_1 [shape=none;image="res/pmos.jpg"]; /* Node styles */ A [style=filled;color=green]; ZN [style=filled;color=green]; /* Connections */ M_i_0:n -> ZN; A -> M_i_0:w; subgraph cluster_a{ /* Put M_i_0 and _VSS_0 on the same rank. */ label="_VSS_0"; subgraph g_VSS_0 { rank=same; _VSS_0 [shape=none;image="res/gnd.jpg";label=""]; _VSS_0 -> M_i_0 [arrowhead=none]; } } M_i_1:s -> ZN; A -> M_i_1:w; /* Put M_i_1 and _VDD_1 on the same rank. */ subgraph cluster_b { label="_VDD_1"; subgraph g_VDD_1 { rank=same; _VDD_1 [shape=none;image="res/pwr.jpg";label=""]; M_i_1 -> _VDD_1 [arrowhead=none]; } } } M_i_1 -> _VDD_1的顺序,由于某种原因它们被反转了。

结果:

_VSS_0 -> M_i_0

© www.soinside.com 2019 - 2024. All rights reserved.