2011-12-22 7 views
5

Estoy tratando de lograr una visualización de un gráfico específico (un gráfico de Cayley de un grupo de permutación simétrica) como el que se hace aquí pero usando Graphviz 2.28 con Dot.Compactando un dígrafo en Graphviz usando Dot Language

cayley http://www.euclideanspace.com/maths/discrete/groups/categorise/finite/cube/cayleyGraph.png

digraph cayley { 
    i -> x [color=red]; 
    i -> y [color=blue]; 
    x -> xx [color=red]; 
    x -> xy [color=blue]; 
    y -> yx [color=red]; 
    y -> yy [color=blue]; 
    xx -> xxx [color=red]; 
    xx -> xxy [color=blue]; 
    xy -> xyx [color=red]; 
    xy -> xyy [color=blue]; 
    yx -> yxx [color=red]; 
    yx -> xyx [color=blue]; 
    yy -> yyx [color=red]; 
    yy -> yyy [color=blue]; 
    xxx -> i [color=red]; 
    xxx -> xxxy [color=blue]; 
    xxy -> xxyx [color=red]; 
    xxy -> xxyy [color=blue]; 
    xyx -> xyxx [color=red]; 
    xyx -> xxyx [color=blue]; 
    xyy -> yy [color=red]; 
    xyy -> xyyy [color=blue]; 
    yxx -> yxxx [color=red]; 
    yxx -> xx [color=blue]; 
    yyx -> xxyy [color=red]; 
    yyx -> xyxx [color=blue]; 
    yyy -> yyyx [color=red]; 
    yyy -> i [color=blue]; 
    xxxy -> xxxyx [color=red]; 
    xxxy -> yyx [color=blue]; 
    xxyx -> yyy [color=red]; 
    xxyx -> xxxyx [color=blue]; 
    xxyy -> xyy [color=red]; 
    xxyy -> yxx [color=blue]; 
    xyxx -> xyxxx [color=red]; 
    xyxx -> xxx [color=blue]; 
    xyyy -> xyyyx [color=red]; 
    xyyy -> x [color=blue]; 
    yxxx -> y [color=red]; 
    yxxx -> xyyyx [color=blue]; 
    yyyx -> xxy [color=red]; 
    yyyx -> xyxxx [color=blue]; 
    xxxyx -> xyyy [color=red]; 
    xxxyx -> yx [color=blue]; 
    xyxxx -> xy [color=red]; 
    xyxxx -> yxxx [color=blue]; 
    xyyyx -> xxxy [color=red]; 
    xyyyx -> yyyx [color=blue]; 
} 

Mi Dot genera la siguiente distribución: cayley que es una gráfica bastante grande en comparación con el anterior. ¿Hay algún attribute que pueda compactar el gráfico lo más cerca posible del primero?

+0

... y he intentado [la solución] (http://stackoverflow.com/questions/3428448/reducing-graph-size-in-graphviz) de @doug y que doesn' t trabajo en este caso. – MihaiPopescu

Respuesta

19

Modifiqué los códigos como los atributos predeterminados de gráfico, nodo y borde para hacer el diseño lo más compactado posible. Tal vez hay un enfoque más perfecto. Por cierto, el nodo i se encuentra a la izquierda pero no a la derecha.

digraph cayley { 
    graph[rankdir=LR, center=true, margin=0.2, nodesep=0.1, ranksep=0.3] 
    node[shape=circle, fontname="Courier-Bold", fontsize=10, width=0.4, height=0.4, fixedsize=true] 
    edge[arrowsize=0.6, arrowhead=vee] 
    i -> x [color=red]; 
    i -> y [color=blue]; 
    x -> xx [color=red]; 
    x -> xy [color=blue]; 
    y -> yx [color=red]; 
    y -> yy [color=blue]; 
    xx -> xxx [color=red]; 
    xx -> xxy [color=blue]; 
    xy -> xyx [color=red]; 
    xy -> xyy [color=blue]; 
    yx -> yxx [color=red]; 
    yx -> xyx [color=blue]; 
    yy -> yyx [color=red]; 
    yy -> yyy [color=blue]; 
    xxx -> i [color=red]; 
    xxx -> xxxy [color=blue]; 
    xxy -> xxyx [color=red]; 
    xxy -> xxyy [color=blue]; 
    xyx -> xyxx [color=red]; 
    xyx -> xxyx [color=blue]; 
    xyy -> yy [color=red]; 
    xyy -> xyyy [color=blue]; 
    yxx -> yxxx [color=red]; 
    yxx -> xx [color=blue]; 
    yyx -> xxyy [color=red]; 
    yyx -> xyxx [color=blue]; 
    yyy -> yyyx [color=red]; 
    yyy -> i [color=blue]; 
    xxxy -> xxxyx [color=red]; 
    xxxy -> yyx [color=blue]; 
    xxyx -> yyy [color=red]; 
    xxyx -> xxxyx [color=blue]; 
    xxyy -> xyy [color=red]; 
    xxyy -> yxx [color=blue]; 
    xyxx -> xyxxx [color=red]; 
    xyxx -> xxx [color=blue]; 
    xyyy -> xyyyx [color=red]; 
    xyyy -> x [color=blue]; 
    yxxx -> y [color=red]; 
    yxxx -> xyyyx [color=blue]; 
    yyyx -> xxy [color=red]; 
    yyyx -> xyxxx [color=blue]; 
    xxxyx -> xyyy [color=red]; 
    xxxyx -> yx [color=blue]; 
    xyxxx -> xy [color=red]; 
    xyxxx -> yxxx [color=blue]; 
    xyyyx -> xxxy [color=red]; 
    xyyyx -> yyyx [color=blue]; 
    { rank=same; x; y } 
    { rank=same; xx; xy; yx; yy } 
    { rank=same; xxx; xxy; xyx; xyy; yxx; yyx; yyy } 
    { rank=same; xxxy; xxyx; xxyy; xyxx; xyyy; yxxx; yyyx } 
    { rank=same; xxxyx; xyxxx; xyyyx } 
} 

La imagen se muestra de la siguiente manera.

enter image description here

+0

¡Impresionante! ¡Gracias! – MihaiPopescu

Cuestiones relacionadas