2012-02-01 18 views
6

C'è un modo per mostrare le caselle orizzontalmente in alcuni casi e verticalmente in altre? (vedi related question).Organizza le caselle orizzontalmente e poi verticalmente in graphviz

Ecco il codice e l'output che sto ottenendo:

codice:

/** 
** Diagram representing the Simulator Engine 
**/ 
digraph G { 
     graph [ 
      rankdir = "TB" 
     ]; 

     /** 
     ** The simulator engine rectangle 
     **/ 
    subgraph cluster_simulator_engine { 
     style=filled; 
     color=lightgrey; 
     node [style=filled,color=white]; 
     label = "Simulator Engine"; 

       /** 
       ** The first topology 
       **/ 
       subgraph cluster_T1 { 
         color=white; 
         node [style=filled]; 

         /** 
         ** The n^th neuron 
         **/ 
         subgraph cluster_T1_N3 { 
           color=lightgrey; 
           node [style=filled]; 
           label = "Neuron n"; 

           /** 
           ** The n^th synapse 
           **/ 
           "T1_N3_S3" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse n" 
           ]; 

           /** 
           ** The second synapse 
           **/ 
           "T1_N3_S2" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 2" 
           ]; 

           /** 
           ** The first synapse 
           **/ 
           "T1_N3_S1" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 1" 
           ]; 

           /*"T1_N1_S3" -> "T1_N1_S2" [style=invis];*/ 
         } 

         /** 
         ** The second neuron 
         **/ 
         subgraph cluster_T1_N2 { 
           color=lightgrey; 
           node [style=filled]; 
           label = "Neuron 2"; 

           /** 
           ** The n^th synapse 
           **/ 
           "T1_N2_S3" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse n" 
           ]; 

           /** 
           ** The second synapse 
           **/ 
           "T1_N2_S2" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 2" 
           ]; 

           /** 
           ** The first synapse 
           **/ 
           "T1_N2_S1" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 1" 
           ]; 

           /*"T1_N1_S3" -> "T1_N1_S2" [style=invis];*/ 
         } 


         /** 
         ** The third neuron 
         **/ 
         subgraph cluster_T1_N1 { 
           color=lightgrey; 
           node [style=filled]; 
           label = "Neuron 1"; 

           /** 
           ** The n^th synapse 
           **/ 
           "T1_N1_S3" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse n" 
           ]; 

           /** 
           ** The second synapse 
           **/ 
           "T1_N1_S2" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 2" 
           ]; 

           /** 
           ** The first synapse 
           **/ 
           "T1_N1_S1" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 1" 
           ]; 

           /*"T1_N1_S3" -> "T1_N1_S2" [style=invis];*/ 
         } 


         label = "Topology 1"; 
       } 

       /** 
       ** The second topology 
       **/ 
       subgraph cluster_T2 { 
         color=white; 
         node [style=filled]; 

         /** 
         ** The n^th neuron 
         **/ 
         subgraph cluster_T2_N3 { 
           color=lightgrey; 
           node [style=filled]; 
           label = "Neuron n"; 

           /** 
           ** The n^th synapse 
           **/ 
           "T2_N3_S3" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse n" 
           ]; 

           /** 
           ** The second synapse 
           **/ 
           "T2_N3_S2" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 2" 
           ]; 

           /** 
           ** The first synapse 
           **/ 
           "T2_N3_S1" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 1" 
           ]; 

           /*"T1_N1_S3" -> "T1_N1_S2" [style=invis];*/ 
         } 

         /** 
         ** The second neuron 
         **/ 
         subgraph cluster_T2_N2 { 
           color=lightgrey; 
           node [style=filled]; 
           label = "Neuron 2"; 

           /** 
           ** The n^th synapse 
           **/ 
           "T2_N2_S3" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse n" 
           ]; 

           /** 
           ** The second synapse 
           **/ 
           "T2_N2_S2" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 2" 
           ]; 

           /** 
           ** The first synapse 
           **/ 
           "T2_N2_S1" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 1" 
           ]; 

           /*"T1_N1_S3" -> "T1_N1_S2" [style=invis];*/ 
         } 


         /** 
         ** The third neuron 
         **/ 
         subgraph cluster_T2_N1 { 
           color=lightgrey; 
           node [style=filled]; 
           label = "Neuron 1"; 

           /** 
           ** The n^th synapse 
           **/ 
           "T2_N1_S3" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse n" 
           ]; 

           /** 
           ** The second synapse 
           **/ 
           "T2_N1_S2" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 2" 
           ]; 

           /** 
           ** The first synapse 
           **/ 
           "T2_N1_S1" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 1" 
           ]; 

           /*"T1_N1_S3" -> "T1_N1_S2" [style=invis];*/ 
         } 


         label = "Topology 2"; 
       } 

    } 

} 

uscita:

First Diagram

Ovviamente questo è di gran lunga troppo lungo. Quello che voglio è spostare ogni sinapsi nella sua stessa linea (penso che si chiami 'rank' in Graphviz-jargon). Apparentemente, non c'è modo di farlo, ma c'è un trick. Pertanto, prendo lo stesso codice di cui sopra e presento bordi invisibili in questo modo

codice:

/** 
** Diagram representing the Simulator Engine 
**/ 
digraph G { 
     graph [ 
      rankdir = "TB" 
     ]; 

     /** 
     ** The simulator engine rectangle 
     **/ 
    subgraph cluster_simulator_engine { 
     style=filled; 
     color=lightgrey; 
     node [style=filled,color=white]; 
     label = "Simulator Engine"; 

       /** 
       ** The first topology 
       **/ 
       subgraph cluster_T1 { 
         color=white; 
         node [style=filled]; 

         /** 
         ** The n^th neuron 
         **/ 
         subgraph cluster_T1_N3 { 
           color=lightgrey; 
           node [style=filled]; 
           label = "Neuron n"; 

           /** 
           ** The n^th synapse 
           **/ 
           "T1_N3_S3" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse n" 
           ]; 

           /** 
           ** The second synapse 
           **/ 
           "T1_N3_S2" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 2" 
           ]; 

           /** 
           ** The first synapse 
           **/ 
           "T1_N3_S1" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 1" 
           ]; 

           "T1_N3_S1" -> "T1_N3_S2" [style=invis]; 
           "T1_N3_S2" -> "T1_N3_S3" [style=invis]; 
         } 

         /** 
         ** The second neuron 
         **/ 
         subgraph cluster_T1_N2 { 
           color=lightgrey; 
           node [style=filled]; 
           label = "Neuron 2"; 

           /** 
           ** The n^th synapse 
           **/ 
           "T1_N2_S3" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse n" 
           ]; 

           /** 
           ** The second synapse 
           **/ 
           "T1_N2_S2" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 2" 
           ]; 

           /** 
           ** The first synapse 
           **/ 
           "T1_N2_S1" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 1" 
           ]; 

           "T1_N2_S2" -> "T1_N2_S3" [style=invis]; 
           "T1_N2_S1" -> "T1_N2_S2" [style=invis]; 
         } 


         /** 
         ** The third neuron 
         **/ 
         subgraph cluster_T1_N1 { 
           color=lightgrey; 
           node [style=filled]; 
           label = "Neuron 1"; 

           /** 
           ** The n^th synapse 
           **/ 
           "T1_N1_S3" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse n" 
           ]; 

           /** 
           ** The second synapse 
           **/ 
           "T1_N1_S2" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 2" 
           ]; 

           /** 
           ** The first synapse 
           **/ 
           "T1_N1_S1" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 1" 
           ]; 

           "T1_N1_S1" -> "T1_N1_S2" [style=invis]; 
           "T1_N1_S2" -> "T1_N1_S3" [style=invis]; 
         } 


         label = "Topology 1"; 
       } 

       /** 
       ** The second topology 
       **/ 
       subgraph cluster_T2 { 
         color=white; 
         node [style=filled]; 

         /** 
         ** The n^th neuron 
         **/ 
         subgraph cluster_T2_N3 { 
           color=lightgrey; 
           node [style=filled]; 
           label = "Neuron n"; 

           /** 
           ** The n^th synapse 
           **/ 
           "T2_N3_S3" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse n" 
           ]; 

           /** 
           ** The second synapse 
           **/ 
           "T2_N3_S2" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 2" 
           ]; 

           /** 
           ** The first synapse 
           **/ 
           "T2_N3_S1" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 1" 
           ]; 

           "T2_N3_S1" -> "T2_N3_S2" [style=invis]; 
           "T2_N3_S2" -> "T2_N3_S3" [style=invis]; 
         } 

         /** 
         ** The second neuron 
         **/ 
         subgraph cluster_T2_N2 { 
           color=lightgrey; 
           node [style=filled]; 
           label = "Neuron 2"; 

           /** 
           ** The n^th synapse 
           **/ 
           "T2_N2_S3" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse n" 
           ]; 

           /** 
           ** The second synapse 
           **/ 
           "T2_N2_S2" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 2" 
           ]; 

           /** 
           ** The first synapse 
           **/ 
           "T2_N2_S1" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 1" 
           ]; 

           "T2_N2_S1" -> "T2_N2_S2" [style=invis]; 
           "T2_N2_S2" -> "T2_N2_S3" [style=invis]; 
         } 


         /** 
         ** The third neuron 
         **/ 
         subgraph cluster_T2_N1 { 
           color=lightgrey; 
           node [style=filled]; 
           label = "Neuron 1"; 

           /** 
           ** The n^th synapse 
           **/ 
           "T2_N1_S3" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse n" 
           ]; 

           /** 
           ** The second synapse 
           **/ 
           "T2_N1_S2" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 2" 
           ]; 

           /** 
           ** The first synapse 
           **/ 
           "T2_N1_S1" [ 
            style=filled 
            shape=box 
            color=white 
            label="Synapse 1" 
           ]; 

           "T2_N1_S1" -> "T2_N1_S2" [style=invis]; 
           "T2_N1_S2" -> "T2_N1_S3" [style=invis]; 
         } 


         label = "Topology 2"; 
       } 

    } 

} 

e l'uscita ora sembra più attraente.

uscita: Second smaller diagram

Ma ora v'è un enorme divario tra le caselle di sinapsi. L'impostazione nodesep=0.1 o len=0.1 non ha alcun effetto. Qualcuno può dirmi come risolvere il problema, o come ridisegnarlo.

NOTA: se qualcuno è curioso del perché io vada da 1 a 2 a n, è perché ho intenzione di inserire un'ellissi, ma non ho idea di come farlo ... attraversa quel ponte quando arrivo ad esso.

risposta

8

E 'ranksep che stai cercando - aggiungere questa riga per gli attributi per il grafico:

ranksep = 0.1 

In dot, questo dà la separazione rango desiderato, in pollici. Questa è la distanza verticale minima tra il fondo dei nodi in una posizione e le parti superiori dei nodi nella successiva.

Problemi correlati