2011-12-22 12 views
5

Sto cercando di ottenere una visualizzazione di un grafico specifico (un grafico di Cayley di un gruppo di permutazioni simmetriche) come quello fatto qui ma utilizzando Graphviz 2.28 con Dot.Compattare un digraph in Graphviz utilizzando il linguaggio Dot

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]; 
} 

mio Dot genera il seguente schema: cayley che è una bella enorme grafico rispetto a quella precedente. C'è uno attribute che può compattare il grafico il più vicino possibile al primo?

+0

... e ho provato [soluzione] (http://stackoverflow.com/questions/3428448/reducing-graph-size-in-graphviz) dal @doug e doesn' t lavorare in questo caso. – MihaiPopescu

risposta

19

Ho modificato i codici come il grafico, il nodo e gli attributi di default del bordo per rendere il layout il più compatto possibile. Forse c'è un approccio più perfetto. A proposito, il nodo i si trova a sinistra ma non a destra.

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 } 
} 

L'immagine è mostrata come segue.

enter image description here

+0

Fantastico! Grazie! – MihaiPopescu

Problemi correlati