2011-08-27 5 views
3

J'utilise ce point-Code pour mon test:Grappa Graphviz Problème dot-visualisation et questions

digraph G { edge [dir=none]; 
p1 [shape=circle,style=filled,label="",height="0.01",width="0.01"]; 
q1 [shape=circle,style=filled,label="",height="0.01",width="0.01"]; 
q2 [shape=circle,style=filled,label="",height="0.01",width="0.01"]; 
q3 [shape=circle,style=filled,label="",height="0.01",width="0.01"]; 
{rank=same; father->p1; mother->p1}; 
{rank=same; q1->q2->q3}; 
{rank=same; son1; daughter1; daughter2}; 
p1->q2; 
q1->son1; 
q2->daughter1; 
q3->daughter2; 
} 

Mon code Java pour créer le graphique est la suivante:

Graph graph = null; 

    graph = program.getGraph(); 

    JScrollPane jsp = new JScrollPane(); 
    jsp.getViewport().setBackingStoreEnabled(true); 

    GrappaPanel gp = new GrappaPanel(graph); 
    gp.addGrappaListener(new GrappaAdapter()); 
    gp.setScaleToFit(false); 
    jsp.setViewportView(gp); 

La sortie est this: Link

Pourquoi l'arborescence est-elle si incorrecte? Et est-il possible de laisser l'Arbre s'afficher de gauche à droite?

Répondre

1

Vous devez "demander" graphviz (l'un des outils, "point", "neato" ...) pour "formater" le graphique avant de pouvoir l'afficher (d'une manière attrayante) dans un GrappaPanel. Avant de construire le GrappaPanel, vous devez effectuer les opérations suivantes:

String [] processArgs = {"dot"}; // You can use "neato" or whatever formatter you want 
Process formatProcess = Runtime.getRuntime().exec(processArgs, null, null); 
GrappaSupport.filterGraph(graph, formatProcess); 
formatProcess.getOutputStream().close(); 

Où « graphique » en GrappaSupport.filterGraph est votre graphique. Après cela, votre graphique est correctement formaté et vous pouvez utiliser le GrappaPanel pour l'afficher. Le résultat sera plus agréable que ce que vous avez posté dans le lien.

Espérons que ça aide, salutations. PS: Pour que le code ci-dessus fonctionne, vous devez avoir "point" (ou tout autre formateur que vous utilisez) dans le chemin, sinon vous devez lui donner le chemin complet du fichier exécutable.