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

时间:2019-04-17 20:49:06

标签: doxygen graphviz dot

我正在尝试向带有点的图形添加两个标签,一个在图形的顶部,一个在图形的底部。确实,我正在尝试修改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脚本自动插入每个点文件中,并满足我的特殊需求。谢谢。

1 个答案:

答案 0 :(得分:1)

您可以在顶部保留一个标签,并通过在具有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
        ]
    }
}