如何使用 Graphviz 绘制三个正方形,一个在另一个里面

How to draw three squares, one inside another, with Graphviz

我正在使用 Linux 的点语言中的 Graphviz 工具。我想画三个正方形,一个在另一个里面。以下代码不正确:

graph A
 { label="a";

   subgraph cluster_A
     {
        b [shape=box,label="b"];
           subgraph cluster_b
                { 
                 c[label="c",shape=box];
                }
     }

 }

你有多种可能性来做到这一点

  • 簇中簇中的box节点
  • 簇中簇中的明文节点
  • 具有 HTML like label 和 HTML 个表的节点

簇中的框:

graph "graph A"
{
    label="\G"
    subgraph "cluster A"
    {
        subgraph "cluster B"
        {
            c[shape=box];
        }
    }
}

簇中的明文:

graph "graph A"
{
    label="\G"
    subgraph "cluster A"
    {
        subgraph "cluster B"
        {
            subgraph "cluster C"
            {
                d[shape=none];
            }
        }
    }
}

两种变体都将标签设置为它们的名称,这是节点的默认设置,但不是图(以及所有包含的子图)的默认设置。由于图表标签是继承的,您可以手动设置所有标签或像我一样使用名称 palceholder。

HTML 喜欢标签

graph "graph A"
{
    label="\G"
    a [shape=none label=<<table><tr><td><table><tr><td><table><tr><td>node a</td></tr></table></td></tr></table></td></tr></table>>];
}

您在格式(边距、填充、边框等)方面有更多的自由度