如何为点图添加顶部和底部标签?

How to add top and bottom labels for dot graph?

我正在尝试向带点的图表添加两个标签,一个在图表的顶部,一个在图表的底部。实际上,我正在尝试修改 Doxygen 生成的点文件以包含这些标签。我以为这会是一件容易的事,但它变成了比我想象的更痛苦的事情。我尝试了以下方法:

1) 有向图中有两个标签,但只显示最后一个标签

2) 垂直堆叠子图并尝试适当放置节点,但这看起来很糟糕并且变得令人头疼(示例如下所示)

digraph D {

  subgraph cluster_p {
    label = "Top Label";
    fontname=calibri;
    fontsize=9;

    rankdir=TB
    subgraph test {
      pencolor=black
      e
    }
    subgraph cluster_c3 {
      label = "Bottom Label";
      labelloc=b;
      fontname=calibri;
      fontsize=9;
      pencolor=white
      f;
    }
    e->f;
  }
}

更新:发布这篇文章大约两个小时后,我终于找到了满足我需求的东西。

digraph G {
    subgraph cluster_0 {
        label="Top";
        subgraph cluster_1 {
            label="Bottom";
            labelloc=b;
            pencolor=white;

            // diagram to enclose
            e->f;
        }
    }
}

这很简单,可以自动将 python 脚本插入到每个点文件中,并支持我的特殊需求。谢谢。

您可以在顶部保留一个标签,并通过在具有 rank=sink 属性的子图中的末尾添加一个节点来模拟另一个标签。该属性强制在其中定义的节点不仅出现在最低等级,而且出现在最低等级之后。这确保它们位于最底部,正是您所需要的:

digraph D {
    pencolor=black
    labelloc=t
    fontname=calibri
    fontsize=9
    label = "Top Label"

    e
    e->f;

    {
        rank=sink
        bottomlabel [
          shape=plain
          label = "Bottom Label"
          fontname=calibri
          fontsize=9
        ]
    }
}