试图在graphviz中创建排名子图

Adr*_*ian 6 graphviz

我试图使用Graphviz制作这样的东西:

    x   y   z
    |   |   |
    #   |   |
   a#__\|   |
    #  /#b  |
    #   #__\|
    #   #  /#c
    #  d#/__#
    #   #\  x
    #   #   |
   e#/__#   |
    #\  #   |
Run Code Online (Sandbox Code Playgroud)

但排名似乎并没有像我预期的那样发挥作用.我想要e低于所有其他节点.

digraph x
{
  rankdir = tb;
  size = "7.5, 7.5";
  rank = source;
  a -> b -> c -> d -> e;
  subgraph "cluster x"
  {
    style=filled;
    color=lightgrey;
    label="x";
    a -> e [style=invis];
  }
  subgraph "cluster y"
  {
    label="y";
    b -> d [style=invis];
  }
  subgraph "cluster z"
  {
    label="z";
    c;
  }
}
Run Code Online (Sandbox Code Playgroud)

第一次尝试

我试图使用clusterrank = global哪种工作,但子图不会分成更明显的列,并且列上有重叠.它也没有像我想的那样走向正确.下图突出显示红色中的一个重叠,但正如您所看到的那样,有4个.

第二次尝试

digraph x
{
  rankdir = tb;
  rankstep=equally;
  clusterrank = global;
  size = "7.5, 7.5";
  a -> b -> c -> d -> e;
  subgraph "cluster x"
  {
    style=filled;
    color=lightgrey;
    label="x";
    a -> e [style=invis];
  }
  subgraph "cluster y"
  {
    label="y";
    b -> d [style=invis];
  }
  subgraph "cluster z"
  {
    label="z";
    c;
  }
}
Run Code Online (Sandbox Code Playgroud)

我试图创建一个单独的集群,它将保证从上到下排名,然后将适当的集群排在一起,但它与之前的尝试相同,删除第一次尝试时看到的框并导致不必要的重叠.

digraph x
{
  rankdir = tb;
  1 -> 2 -> 3 -> 4 -> 5;
  a -> b -> c -> d -> e;
  { rank=same; 1; a; }
  { rank=same; 2; b; }
  { rank=same; 3; c; }
  { rank=same; 4; d; }
  { rank=same; 5; e; }

  subgraph "cluster x"
  {
    style=filled;
    color=lightgrey;
    label="x";
    a -> e [style=invis];
  }
  subgraph "cluster y"
  {
    label="y";
    b -> d [style=invis];
  }
  subgraph "cluster z"
  {
    label="z";
    c;
  }
}
Run Code Online (Sandbox Code Playgroud)

第三次尝试

任何人都有任何想法,试图获得我想要的布局?

作为旁注,我尝试登录Graphviz论坛有关此事,但发现从此页面登录似乎不起作用.我一直有一个很长的超时问题.我检查了我的电子邮件帐户,没有任何内容.我尝试使用相同的电子邮件创建一个新帐户,并说该帐户已在使用中.然后我尝试让他们重置我的密码,我得到另一个超时问题.

有谁知道我可以联系谁来尝试解决这个烦人的登录问题?也许已登录的人可以为我发帖吗?

小智 1

使用 -Gnewrank 运行点。这将根据你的草图得到你想要的东西。如果需要更多调整,请指定您想要的内容。