#doxygen #graphviz #dot
#doxygen #graphviz #точка
Вопрос:
Я пытаюсь добавить две метки к графику с точкой, одну вверху и одну внизу графика. На самом деле, я пытаюсь изменить точечные файлы, созданные 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. Я думаю, что здесь у нас есть 2 вопроса в 1. 1) как возможно иметь отворот вверху / внизу внутри «точечного» графика, т.Е. Более или менее «заголовок». 2) вопрос о doxygen, но вопрос здесь в том, к какому типу графиков вы имеете в виду, т. Е. Автоматически генерируемые doxygen графики (например, графики вызовов / вызывающих абонентов) или графики, которые вы добавляете с помощью команды типа
dot
илиdotfile
. В последнем случае это тот же вопрос, что и 1). Пожалуйста, объясните, чего именно вы хотите.2. Привет, Альберт, извини, я не выразился яснее. Точечные файлы, о которых я говорю, представляют собой автоматически сгенерированные doxygen графики, в частности графики вызовов.
3. @dany уже дал возможное решение первой проблемы. Автоматически сгенерированные файлы на данный момент невозможны, но также остается неясным: должен ли текст быть одинаковым для всех графиков или отличаться для каждого графика. Кроме того, я предполагаю, что, хотя вы говорите «конкретно графики вызовов», это должно быть возможно для всех типов сгенерированных графиков. Вопрос, конечно, в том, о каких текстах вы думаете, или это всегда должен быть свободный текст. Пожалуйста, укажите свои требования / разъяснения в вопросе, а не в комментариях.
Ответ №1:
Вы можете оставить одну метку вверху и имитировать другую метку, добавив узел в конце внутри подграфа с rank= sink
attribute . Этот атрибут заставляет узлы, которые определены внутри него, появляться не только в самом низком ранге, но и в ранге после этого. Это гарантирует, что они будут в самом низу, именно то, что вам нужно:
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
]
}
}