Как добавить верхнюю и нижнюю метки для точечного графика? - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь добавить две метки к графику с точкой, одну сверху и одну снизу графика.На самом деле я пытаюсь изменить файлы точек, сгенерированные 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 Ответ

1 голос
/ 18 апреля 2019

Вы можете оставить одну метку вверху и смоделировать другую метку, добавив узел в конце внутри подграфа с атрибутом 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
        ]
    }
}

...