2016-06-22 6 views
0

я использую Graphviz для представления массивов, используя subgraphs и record узлов:Представляют массив с индексами с использованием точек записи узлов (GraphViz)

subgraph cluster_array 
{ 
    label="my array" 
    Array [shape="record", label="A | B | C | D"] 
    Array 
} 

Я хотел бы добавить внешние индексов для каждого из элементов массива, отображение 0 -> A, 1 -> B и так далее.

Я хочу, чтобы достичь результата, аналогичного:

enter image description here

Я искал в Интернете и попытался с помощью xlabel, но не мог найти способ, чтобы правильно добавить метку для каждой записи элемента. Я также попытался сделать индексы частью ярлыка и перемещая метку с lp, но, похоже, это не влияет на узлы record.

Можно ли добавлять метки внешних элементов к record узлам с использованием GraphViz?

ответ

2

Не настоящий ответ на ваш вопрос (который, я думаю, будет «нет»), но обходной путь, который может дать вам то, что вы хотите. Я использую «параллельный» запись узел без границ (или цвета бумаги границ, чтобы быть точными), расположенной в непосредственной близости и соединена невидимая кромка:

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; 
} 

, который дает

enter image description here