tag style div attribute coding-style grouping stylesheet graphviz edge

coding-style - div - html title attribute style



Graphviz: ¿cómo asignar el mismo estilo a un grupo de bordes? (2)

Tengo un gráfico que quiero que Graphviz diseñe y visualice para mí. La gráfica tiene 122 aristas y 123 nodos. Los bordes son de 4 tipos diferentes y quiero que sean distinguibles visualmente. Sin embargo, aún no he decidido cuál sería la mejor manera de hacerlo, me gustaría jugar un poco con los diales. Desafortunadamente no veo nada como un atributo de "clase" o "hoja de estilo" para los bordes. Solo puedo establecer atributos visuales individualmente para cada borde (mucha repetición). Tal vez me he perdido algo? Después de todo, ¿hay alguna manera de agregar bordes a 4 grupos diferentes y luego diseñar los grupos, no cada borde individualmente?


Para diseñar bordes (o nodos) por grupo en lugar de individualmente, use subgraph .

al igual que:

digraph G { node [style=filled,color="#5D8AA8", fillcolor="#5D8AA8"]; subgraph c1 { edge [color="#004225", arrowsize="0.6", penwidth="1"]; "node 1" -> "node 3"; "node 5" -> "node 7"; "node 1" -> "node 2"; label = ""; } subgraph c2 { edge [color="#FBEC5D", arrowsize="1.2", penwidth="3"]; "node 2" -> "node 4"; "node 4" -> "node 6"; "node 3" -> "node 5"; "node 6" -> "node 8"; label = ""; } begin -> "node 1"; start -> "node 2"; "node 1" -> "node 4" "node 2" -> "node 6"; start [shape=diamond];}

Por lo tanto, si coloca el código anterior en un archivo con una extensión ".dot"; luego procésela en graphviz, verá tres tipos diferentes de bordes, en cuanto al aspecto.

Un tipo es solo el predeterminado (color = negro, grosor = 1, etc.), Es decir, estos bordes no están asignados a un subgrafo.

Los otros dos tipos de bordes (un grupo delgado, de color verde oscuro y un grupo grueso y de color amarillo brillante) están diseñados en función de la asignación a uno de los dos grupos de subgrafos.

El subgrafo a menudo se usa para resaltar visualmente un grupo de nodos (es decir, para distinguir un ''grupo'' contiguo particular de nodos del resto de nodos en el grafico); sin embargo, no hay ningún requisito (como puede ver en mi ejemplo) que los bordes que eligió diseñar por asignación a un subgrafo determinado, pertenecen a un ''grupo'' de nodos contiguos; puede designar cualquier borde que desee asignar una sub-grafica dada)

Para mí, los nodos de estilo por grupo son análogos a la práctica HTML de definir una clase y asignarla a una colección de divs en el marcado HTML


Si bien la respuesta de @ doug es correcta (use subgrafos para asignar un estilo similar a grupos de objetos), creo que mi ejemplo es mejor:

digraph G { compound=true; subgraph columns { c0r0 -> c0r1; c0r1 -> c0r2; c1r0 -> c1r1; c1r1 -> c1r2; c2r0 -> c2r1; c2r1 -> c2r2; } subgraph rows { edge [color=red, constraint=false]; c0r0 -> c1r0; c1r0 -> c2r0; c0r1 -> c1r1; c1r1 -> c2r1; c0r2 -> c1r2; c1r2 -> c2r2; } }


cat square-digraph.dot | dot -Tsvg -o square-digraph.svg