Представлять массив с индексами, используя точечные записи (Graphviz)
Я использую Graphviz для представления массивов, используя subgraphs
а также record
узлы:
subgraph cluster_array
{
label="my array"
Array [shape="record", label="A | B | C | D"]
Array
}
Я хотел бы добавить внешние индексы для каждого элемента массива, отображение 0 -> A
, 1 -> B
и так далее.
Я хочу добиться результата, похожего на:
Я искал в Интернете и пытался использовать xlabel
но не смог найти способ правильно добавить метку для каждого элемента записи. Я также попытался сделать индексы частью метки и переместить метку с помощью lp
, но, похоже, не влияет на record
узлы.
Можно ли добавить метки внешних элементов в record
узлы, использующие GraphViz?
1 ответ
Не реальный ответ на ваш вопрос (который, я думаю, был бы "нет"), но обходной путь, который может дать вам то, что вы хотите. Я использую "параллельный" узел записи без границ (или, если быть точным, границы цвета бумаги), расположенный очень близко и соединенный невидимым краем:
digraph so
{
subgraph cluster0
{
rank = same{ Array notes }
color = white;
Array [ shape = record, label = "{ A | B | C | D }"] ;
notes [ shape = record, color = white, label = "{ a_1 | b_2 | c_3 | d_4 }" ];
Array -> notes[ style = invis ];
}
nodesep = .0;
X -> Array -> Z;
}
который дает