2011-09-23 16 views
5

El uso de rubí graphviz, he creado un gráfico que tiene este aspecto (la frontera añadido a acentuar los bordes de renderizado):Fuerza dos nodos para ocupar el mismo rango en Graphviz?

Before

Lo que realmente quiero es que A y K para alinear juntos a la arriba (o izquierda, si rankdir = "LR"). Por lo que añade un nodo invisible (llámese X), y añadí bordes invisibles desde X a A y K. Y esto es lo que tengo:

After

X, XA, y XK no tienen etiquetas, y el estilo establecido en 'invis'. X tiene la altura, el ancho y el margen establecidos en 0, y el conjunto de ajustes se establece en verdadero. XA y XK tienen minlen, len y penwidth establecidos en 0.

Pero todavía hay espacio vacío en la parte superior. ¿Hay alguna manera de deshacerse de él, menos de recortar después del hecho?

Respuesta

3

No necesita nodos invisibles para lograr esto.

Esta es la sintaxis con punto para forzar el mismo rango para dos nodos:

{rank=same; A; K;} 

Esto se llama un subgraph.

no sé rubí graphviz, no estoy seguro de cómo crear un subgrafo - pero hay un example on github:

c2 = g.subgraph { |c| 
    c[:rank => "same"] 
    c.mysite[:label => "\nexample.com\n ", :shape => "component", :fontname => "Arial"] 
    c.dotgraph[:label => "\ndotgraph.net\n ", :shape => "component", :fontname => "Arial"] 
} 
+0

tomó un poco de discusiones adicionales para obtener la solución anterior para trabajar, pero los subgrafos resultaron ser la clave. ¡Gracias! – mbklein

+0

Un muy buen ejemplo de una respuesta para resolver el problema del OP sin responder su pregunta. Tengo el mismo problema de "cómo evitar que los nodos invisibles ocupen espacio" ... ;-) – DevSolar

+0

@DevSolar ... o un ejemplo de una pregunta incorrecta para resolver el problema inicial :-) Sin embargo, puede ser, en mi humilde opinión la mayoría de las veces, es mejor no usar nodos invisibles si hay otra solución. Pero continúe y publique una pregunta sobre su problema en particular, alguien puede encontrar una solución. – marapet

Cuestiones relacionadas