Представлять массив с индексами, используя точечные записи (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;
}

который дает

введите описание изображения здесь

Другие вопросы по тегам