从“普通”子图切换到聚类时,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 _...”时,它看起来像这样。
这里有什么问题?为什么rank=same
不再按预期工作?同样,给定的端口位置不再按预期运行(在节点的南/北不再连接边缘)。
我试图rank=same
将群集退出到自己的语句中,但是随着边框和标签的消失,这似乎完全覆盖了之前的群集语句。另外,我尝试constraint=false
在节点连接上使用,但是这弄乱了节点的顺序,因此我对这种方法并不满意。
任何帮助表示赞赏。如果要重新创建图形,可以在这里找到使用的图像。
没错,正如文档所述,“ rank”属性仅适用于子图(集群不再是子图)。但是有什么问题,将另一个子图放入群集中!
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
因此它们被反转了。
结果:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句