Как работать с плотно связанными графами с Neato

У меня есть следующий файл dot/neato...

graph G
{

  node [color=Red]

  r01
  r02

  r03

  r04
  r05

  r06
  r07
  r08
  r09

  r10
  r11

  node [color=Blue]

  p01
  p02

  p03

  p04
  p05
  p06

  p07
  p08
  p09
  p10
  p11

  p12
  p13

  r01 -- r02
  r01 -- p01
  r01 -- p02
  r02 -- p01
  r02 -- p02
  p01 -- p02

  r03 -- p03

  r04 -- r05
  r04 -- p04
  r04 -- p05
  r04 -- p06
  r05 -- p04
  r05 -- p06
  p04 -- p05
  p04 -- p06

  r06 -- r07
  r06 -- r08
  r06 -- r09
  r06 -- p07
  r06 -- p08
  r06 -- p09
  r06 -- p10
  r06 -- p11
  r07 -- r08
  r07 -- r09
  r07 -- p07
  r07 -- p08
  r07 -- p09
  r07 -- p10
  r07 -- p11
  r08 -- r09
  r08 -- p07
  r08 -- p08
  r08 -- p09
  r08 -- p10
  r08 -- p11
  r09 -- p07
  r09 -- p08
  r09 -- p09
  r09 -- p10
  r09 -- p11
  p07 -- p08
  p07 -- p09
  p07 -- p10
  p07 -- p11
  p08 -- p09
  p08 -- p10
  p08 -- p11
  p09 -- p10
  p09 -- p11
  p10 -- p11

  r10 -- r11
  r10 -- p12
  r10 -- p13
  r11 -- p12
  r11 -- p13
  p12 -- p13
}

...из которого я создаю это изображение, используя neato.

neato -Tpng -o graph-g.png graph-g.txt

В целом, neato выполняет достойную работу, но самая большая связанная компонента в графе выглядит довольно нелепо. Что я могу сделать, чтобы это выглядело лучше? Мои критерии заключаются в том, что никакие узлы не должны перекрываться, и между соединенными узлами должно быть достаточное расстояние, чтобы вы могли видеть немного края между ними.


person Daniel Standage    schedule 06.10.2011    source источник
comment
Только что нашел это (stackoverflow.com/questions/1039785/), поэтому мой вопрос выглядит как дубликат. Однако мне больше нравятся ответы в этой теме!   -  person Daniel Standage    schedule 06.10.2011


Ответы (2)


Если вы добавите следующее в верхнюю часть графика:

overlap=false;
splines=true;

Результат:

вывод графвиза без перекрытия со сплайнами

Не только узлы больше не перекрываются, но и ребра направляются вокруг узлов.

person marapet    schedule 06.10.2011

Graphviz имеет атрибут overlap (ищите его здесь), который иногда можно применять успешно.

Когда я вставляю overlap = false над вашим первым атрибутом node, результатом является следующее изображение.

График с использованием перекрытия = ложь

Когда я вместо этого вставляю overlap = scalexy в то же место, я получаю следующее.

График с использованием перекрытия = масштаб

К сожалению, у вас все еще есть ребра, проходящие через узел p11. Будем надеяться, что способ решения этой проблемы тоже будет найден.

Вы можете увидеть пример overlap = false испорченного в нижней части этой страницы. .

person David Alber    schedule 06.10.2011