使用Graphviz和neato时群集边界和节点之间的填充

使用Graphviz和neato时群集边界和节点之间的填充,graphviz,neato,Graphviz,Neato,我想在Graphviz中生成以下图形: 出于所解释的原因,这: 产生以下结果: 以下: 我得到了正确的结果 虽然这样做有效,但我希望能够更直接地控制节点的位置,因此我尝试切换到neato,以便可以使用pos强制节点位置: graph g { layout=neato; node[shape=record, height="0.4", width="0.4"]; edge[dir=none]; A [pos="1,3!"]; B [pos="2,3!"];

我想在Graphviz中生成以下图形:

出于所解释的原因,这:

产生以下结果:

以下:

我得到了正确的结果

虽然这样做有效,但我希望能够更直接地控制节点的位置,因此我尝试切换到neato,以便可以使用pos强制节点位置:

graph g
{
   layout=neato;
   node[shape=record, height="0.4", width="0.4"];
   edge[dir=none];

   A [pos="1,3!"];
   B [pos="2,3!"];
   C [pos="3,3!"];
   D [pos="1,2!"];
   E [pos="2,2!"];
   F [pos="3,2!"];
   G [pos="1,1!"];
   H [pos="2,1!"];
   I [pos="3,1!"];

   A -- B -- C;
   D -- E -- F;
   G -- H -- I;
   A -- D -- G;

   subgraph clusterX
   {
      label="Cluster 1";
      A;
      B;
   }

   subgraph clusterY
   {
      label="Cluster 2";
      E; F; H; I;
   }
}
这将产生以下结果:


我怎样才能让neato在集群边界和集群内的节点之间添加填充(与dot的方式相同)?

我不喜欢成为一个派对扫兴者,但我认为固定位置和集群的neato方法不会成功

群集支持取决于布局引擎-:

注意,无论好坏,簇子图都不是点的一部分 语言,但仅是某些人遵守的句法惯例 布局引擎

,虽然
fdp
确实支持neato-like布局,但它确实支持

在上面链接的论坛条目中,ERG建议在某个时候使用
gvpr
脚本来实现这一点-可能不是您想要的解决方案


顺便说一句,该图不应该是有向图,我收到警告,并将所有
->
替换为
-

谢谢@marapet。看来我得改变我的方法了。我感谢您提供的信息和链接。我已更新问题以删除定向边。
   F; E; I; H; D; G; A; B; C;
graph g
{
   layout=neato;
   node[shape=record, height="0.4", width="0.4"];
   edge[dir=none];

   A [pos="1,3!"];
   B [pos="2,3!"];
   C [pos="3,3!"];
   D [pos="1,2!"];
   E [pos="2,2!"];
   F [pos="3,2!"];
   G [pos="1,1!"];
   H [pos="2,1!"];
   I [pos="3,1!"];

   A -- B -- C;
   D -- E -- F;
   G -- H -- I;
   A -- D -- G;

   subgraph clusterX
   {
      label="Cluster 1";
      A;
      B;
   }

   subgraph clusterY
   {
      label="Cluster 2";
      E; F; H; I;
   }
}