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

问题描述 投票:0回答:1

我正在尝试将两个标签添加到带有点的图形中,一个位于顶部,一个位于图形的底部。真的,我正在尝试修改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脚本到每个点文件中,并支持我的特殊需求。谢谢。

doxygen graphviz dot
1个回答
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
        ]
    }
}

© www.soinside.com 2019 - 2024. All rights reserved.