Graphviz 如何在一个主图形中按点布局多个子图?

Graphviz 如何在一个主图形中按点布局多个子图?,graphviz,dot,subgraph,Graphviz,Dot,Subgraph,我正在尝试使用dot创建一个图形。下面给出了我到目前为止所绘制的图形,并给出了代码 代码 digraph top { node [shape=record ,penwidth = 2,fontsize=25]; graph [labeljust=l] ratio="fill"; subgraph cluster_1 { label = "Box 1"; fontsize=40; subgraph cluster_2 { label = "B

我正在尝试使用
dot
创建一个图形。下面给出了我到目前为止所绘制的图形,并给出了代码

代码

digraph top {
  node [shape=record ,penwidth = 2,fontsize=25];
  graph [labeljust=l]
  ratio="fill";

  subgraph cluster_1 {
    label = "Box 1";
    fontsize=40;
    subgraph cluster_2 {
      label = "Box 2";
      fontsize=38

      subgraph cluster_3 {
        label = "Box 3";
        fontsize=36;

        subgraph cluster_4 {
            label = "Box 4";
            fontsize=34;



            subgraph cluster_7 {
                    label = "Box 5";
                    fontsize=30;
                    color=blue;
                    style="dashed";
                    subgraph cluster8 {
                        color=red;
                        label = "Box 6";
                        subgraph cluster9 {
                            label = "Box 7";
                            subgraph cluster10 {
                                label = "Box 8";
                                l4 [label = "{  Label : X \l| \
                                             Label : 2014-12-05 \l| \
                                             Label : 2015-01-04 \l| \
                                             Label : true \l} \
                                            "];
                            }
                            subgraph cluster11 {
                                label = "Box 9";
                                l5 [label = "{  Label : X \l| \
                                             Label : 2015-03-06 \l| \
                                             Label : 2015-01-04 \l| \
                                             Label : true \l} \
                                            "];
                            }
                            subgraph cluster12 {
                                label = "Box 10";
                                l6 [label = "{  Label : X \l| \
                                             Label : 2015-07-03 \l| \
                                             Label : 2015-08-31 \l| \
                                             Label : true \l} \
                                            "];
                            }

                        }

                    }
                    subgraph cluster13 {
                        color=green;
                        label = "Box 11";
                        subgraph cluster {
                            label = "Box 12";
                            "Label : 2 days"
                        }
                    }
                    subgraph cluster14 {
                        label = "Box 13";
                        style=bold;
                        fontsize=20;
                        color=grey;
                        subgraph cluster15 {
                            label = "Box 14";
                            subgraph cluster16 {
                                label = "Box 15";
                                subgraph cluster17 {
                                    label = "if";
                                    subgraph cluster18 {
                                        label = "and";
                                        subgraph cluster19 {
                                            label = "Box 16";
                                            subgraph cluster20 {
                                                label = "Box 17";
                                                l7 [label = "{  Label : A \l| \
                                                                 Label : B \l| \
                                                                 Label : C \l| \
                                                                 Label : D \l} \
                                                                "];
                                            }
                                        }
                                        subgraph cluster21 {
                                            label = "Box 18";
                                            subgraph cluster {
                                                label = "Box 19";
                                                "Label : T"
                                            }
                                        }
                                    }
                                }
                                subgraph cluster29 {
                                    label = "then";
                                    "Label : O"
                                }
                            }
                        }
                        subgraph cluster22 {
                            label = "Box 19";
                            subgraph cluster30 {
                                label = "Box 20";
                                subgraph cluster31 {
                                    label = "if";
                                    subgraph cluster32 {
                                        label = "and";
                                        subgraph cluster33 {
                                            label = "Box 21";
                                            subgraph cluster34 {
                                                label = "Box 22";
                                                l8 [label = "{  Label : A \l| \
                                                                 Label : B \l| \
                                                                 Label : C \l| \
                                                                 Label : D \l} \
                                                                "];
                                            }
                                        }
                                        subgraph cluster35 {
                                            label = "Box 23";
                                            subgraph cluster {
                                                label = "Box 24";
                                                "Label : T"
                                            }
                                        }
                                    }
                                }
                                subgraph cluster36 {
                                    label = "then";
                                    "Label : C"
                                }
                            }
                        }

                    }
            }

            subgraph cluster_5 {
                label = "Box 24"
                fontsize=30;

                color=red;

                subgraph cluster_6 {
                    label = "Box 25";

                    subgraph cluster_8 {
                        label = "Box 26";

                        subgraph cluster {
                            label = "Box  27";
                            "Label : 200"
                        }

                    }

                }
                subgraph cluster {
                    label = "Box 28";
                    subgraph cluster {
                        label = "Box 29";
                        l1 [label = "{  Label : F \l| \
                                        Label : N \l |\
                                        Label : H \l |\
                                        Label : N \l} \
                                        "];

                        subgraph cluster {
                            label = "Box 30";
                            subgraph cluster {
                                label = "Box 31";
                                l2 [label = "{  C \l| \
                                                I\l} \
                                                "];
                            }
                            l3 [label = "{  label : F \l| \
                                             label : F \l| \
                                             label : A \l| \
                                             label : F \l} \
                                            "];
                        }
                    }

                }

            }

        }
      }
    }
  }
}
我面临的问题是关于子图的布局。我有兴趣排列方框“
方框13
”、“
方框11
” 和垂直方向的“
框6
”。我想把“
方框6
”和“
方框11
”放在第一行,把“
方框13
”放在第二行。 这种安排将在“方框5”内。我知道可用的布局选项。我可以把这三个盒子(6,11,13)放进单独的文件中并合并。但我不清楚如何在“框5”内布局这三个框


提前感谢。

您需要一些脚手架,即看不见的边(可能还有节点), 尝试在最后一个花括号之前添加以下内容:

"Label : C"->"Label : 2 days"->l6[color=none]

我正在基于XML创建这个图,需要为不同的XML创建更多性质类似的图。关于更适合的工具的建议也是受欢迎的。浏览文档,它看起来像是
gvpr
,这可能有助于将较小的图形组合成一个主图形。但我还不了解它的内部工作原理。您是否曾尝试过altova的XMLSpy或Oracle的JDeveloper?他们支持XSD,它看起来有点像您的输出。