Предотвращение дублирования записей с помощью graphviz и Neato

Я создаю точечный файл для представления компьютерного оборудования и физических подключений к сетевому коммутатору и дисплеям. У меня он выглядит нормально при обработке программой dot, но я думаю, что действительно хочу, чтобы он был обработан Neato, чтобы создать более «свободную форму» изображения, когда оно начинает расти. Прямо сейчас, когда я запускаю свой большой файл с Neato, все перекрывается.

Я пытаюсь понять синтаксис, где определить атрибут overlap. Ниже приведено подмножество моего точечного файла.

graph g {  
    node [shape=record,height=.1];  
    PC8[label="{{<GigE1>GigE1|<GigE2>GigE2}|{<name>PC8}|{<dvi1>dvi1|<dvi2>dvi2|<dvi3>dvi3|<dvi4>dvi4}}"];  
    PC9[label="{{<GigE1>GigE1|<GigE2>GigE2}|{<name>PC9}|{<dvi1>dvi1|<dvi2>dvi2|<dvi3>dvi3|<dvi4>dvi4}}"];
    C1[label = "{{<dvi1>dvi1}|{<name>C1}}"];  
    C2[label = "{{<dvi1>dvi1}|{<name>C2}}"];  
    C3[label = "{{<dvi1>dvi1}|{<name>C3}}"];  
    C4[label = "{{<dvi1>dvi1}|{<name>C4}}"];  
    D1[label = "{{<dvi1>dvi1}|{<name>D1}}"];  
    D2[label = "{{<dvi1>dvi1}|{<name>D2}}"];  
    "PC8":dvi1 -- "C1":dvi1;  
    "PC8":dvi2 -- "C2":dvi1;  
    "PC8":dvi3 -- "C3":dvi1;  
    "PC8":dvi4 -- "C4":dvi1;  
    "PC9":dvi1 -- "D1":dvi1;  
    "PC9":dvi2 -- "D2":dvi1;  
}

person Chris Williams    schedule 24.06.2009    source источник
comment
Что ж, как и в случае с большинством вопросов... вскоре после того, как я опубликовал, я понял ответ. Мне нужно было добавить график [overlap=false]; вверху файла.   -  person Chris Williams    schedule 24.06.2009
comment
Почему бы вам не опубликовать это как ответ? stackoverflow.com/questions/252194 /   -  person jjclarkson    schedule 24.06.2009


Ответы (2)


Что ж, как и в случае с большинством вопросов... вскоре после того, как я опубликовал, я понял ответ. Мне нужно было добавить graph [overlap=false]; вверху файла.

Делай это так:

graph g {
    overlap = false;

    node [shape=record,height=.1];
    /* ... */
}
person Community    schedule 07.12.2009
comment
На самом деле вам нужно добавить его во внешнее определение графа. То есть после первой строки файла, как представлено, а не как самая первая строка. - person wfaulk; 28.06.2013
comment
Я сделал это вики сообщества, так как ни один из моих исходных текстов ответов не остался после редактирования! - person Phil H; 12.02.2014

Установка перекрытия на false будет работать для Neato, как говорится в ответе сообщества вики; однако, если граф демонстрирует какую-либо регулярность или симметрию, [overlap=false] часто искажает его, покачивая узлы, чтобы они не перекрывались.

Используйте [overlap=false] в крайнем случае.

Все перекрытия узлов, которые выводятся из Neato, можно рассматривать как возникающие, потому что узлы слишком велики по сравнению с ребрами. Вы можете устранить любые перекрытия, уменьшив узлы и сохранив симметрию в графическом изображении, установив [overlap=scale]. Цитирование руководства пользователя Neato:

Для улучшения четкости иногда полезно устранить перекрывающиеся узлы или ребра. Один из способов устранить перекрытие узлов — просто увеличить макет (с точки зрения центральных точек узлов) настолько, насколько это необходимо. Это включается путем установки атрибута графика перекрытия = масштаба. Это преобразование сохраняет общие геометрические отношения в макете, но в неблагоприятных случаях может потребоваться высокий коэффициент масштабирования.

Как сказано в документации, [overlap=scale] может привести к неприемлемо большим рисункам графиков, но если это не так, его вывод, как правило, будет выглядеть лучше, чем [overlap=false].

person jwezorek    schedule 27.10.2020