Как предотвратить рисование некоторых узлов и ребер?

4385
badp

У меня очень простой график:

digraph G { "for" -> "initial assignment" "initial assignment" -> "condition" "condition" -> "code" [color=red] "condition" -> "end" [color=red] "code" -> "final assignment" [color=red] "final assignment" -> "condition" [color=red] } 

Смотрите вывод

Однако узлы должны быть нарисованы в определенном порядке сверху вниз. (Красные стрелки будут красными, потому что они игнорируют этот конкретный порядок.)

Один из способов сделать это:

digraph G {         "$1" -> "$2" -> "$3" -> "$4" -> "$5" -> "$6"   "for" -> "initial assignment" "initial assignment" -> "condition" "condition" -> "code" [color=red] "condition" -> "end" [color=red] "code" -> "final assignment" [color=red] "final assignment" -> "condition" [color=red]  } 

Смотрите вывод

Тем не менее, это отображает эти дополнительные узлы на графике, и я бы предпочел не иметь этого. Как я могу определить узлы и ребра, не рисуя их?

(Я мог бы определить края, чтобы быть белым, текст узла, чтобы быть белым, и т. Д., Но Graphviz все равно выделил бы пространство для них, и это не будет работать на прозрачных изображениях PNG. Кроме того, слои не работают для всех форматов вывода такие как .png, и пространство, необходимое для этих узлов, все еще выделено. Давайте не будем рассматривать эти решения.)

3

2 ответа на вопрос

3
cYrus

Почему бы не использовать сами узлы для предложения конкретного заказа?

орграф G { { край [стиль = невидимость]  а [этикетка = «для»] b [label = "начальное назначение"] с [метка = «состояние»] d [label = "окончательное назначение"] е [метка = «код»] F [этикетка = "конец"]  a -> b -> c -> d -> e -> f }  а -> б -> с с -> е [цвет = красный] c -> f [color = red] e -> d -> c [color = red] } 
Это делает свое дело в этом простом случае. :) badp 12 лет назад 0
1
badp

Стивен Норт, автор Graphviz, предлагает использовать [style=invis]:

digraph G {  { node [style=invis] edge [style=invis] "$1" -> "$2" -> "$3" -> "$4" -> "$5" -> "$6"  }    ................................................................................ 

выход

Это не полностью решает проблему, так как для этих фрагментов все еще выделяется место, но я должен догадаться, что это так же хорошо, как и получается.