2010-03-18 7 views
11

J'essaye de dessiner un graphique montrant des préfixes de recherche using twopi. J'ai un fichier d'entrée simple et je reçois cette sortie:Disposition de contrôle utilisant graphviz twopi

alt text http://www.freeimagehosting.net/uploads/th.ac6cd51528.png (full image)

Voici le fichier d'entrée:

digraph search { 

// ordering=out; 
// color=blue; 
// rank=same; 
// overlap=scale; 
rankdir=LR; 
root=root; 
ranksep=1.25; 
overlap=true; 

"root"; 

a [color=none,fontsize=12]; 
b [color=none,fontsize=12]; 
c [color=none,fontsize=12]; 
d [color=none,fontsize=12]; 
e [color=none,fontsize=12]; 
f [color=none,fontsize=12]; 
#g [color=none,fontsize=12]; 
h [color=none,fontsize=12]; 
i [color=none,fontsize=12]; 
j [color=none,fontsize=12]; 
k [color=none,fontsize=12]; 
l [color=none,fontsize=12]; 
m [color=none,fontsize=12]; 
n [color=none,fontsize=12]; 
o [color=none,fontsize=12]; 
p [color=none,fontsize=12]; 
q [color=none,fontsize=12]; 
r [color=none,fontsize=12]; 
s [color=none,fontsize=12]; 
t [color=none,fontsize=12]; 
u [color=none,fontsize=12]; 
v [color=none,fontsize=12]; 
w [color=none,fontsize=12]; 
x [color=none,fontsize=12]; 
y [color=none,fontsize=12]; 

#ga [color=none,fontsize=12]; 
gb [color=none,fontsize=12]; 
gc [color=none,fontsize=12]; 
gd [color=none,fontsize=12]; 
ge [color=none,fontsize=12]; 
gf [color=none,fontsize=12]; 
gg [color=none,fontsize=12]; 
gh [color=none,fontsize=12]; 
gi [color=none,fontsize=12]; 
gj [color=none,fontsize=12]; 
gk [color=none,fontsize=12]; 
gl [color=none,fontsize=12]; 
gm [color=none,fontsize=12]; 
gn [color=none,fontsize=12]; 
go [color=none,fontsize=12]; 
gp [color=none,fontsize=12]; 
gq [color=none,fontsize=12]; 
gr [color=none,fontsize=12]; 
gs [color=none,fontsize=12]; 
gt [color=none,fontsize=12]; 
gu [color=none,fontsize=12]; 
gv [color=none,fontsize=12]; 
gw [color=none,fontsize=12]; 
gx [color=none,fontsize=12]; 
gy [color=none,fontsize=12]; 

gaa [color=none,fontsize=12]; 
gab [color=none,fontsize=12]; 
gac [color=none,fontsize=12]; 
gad [color=none,fontsize=12]; 
gae [color=none,fontsize=12]; 
gaf [color=none,fontsize=12]; 
gag [color=none,fontsize=12]; 
gah [color=none,fontsize=12]; 
gai [color=none,fontsize=12]; 
gaj [color=none,fontsize=12]; 
gak [color=none,fontsize=12]; 
gal [color=none,fontsize=12]; 
gam [color=none,fontsize=12]; 
gan [color=none,fontsize=12]; 
gao [color=none,fontsize=12]; 
gap [color=none,fontsize=12]; 
gaq [color=none,fontsize=12]; 
#gaz [color=none,fontsize=12]; 
gas [color=none,fontsize=12]; 
gat [color=none,fontsize=12]; 
gau [color=none,fontsize=12]; 
gav [color=none,fontsize=12]; 
gaw [color=none,fontsize=12]; 
gax [color=none,fontsize=12]; 
gay [color=none,fontsize=12]; 

gaza [color=none,fontsize=12]; 
gazb [color=none,fontsize=12]; 
gazc [color=none,fontsize=12]; 
gazd [color=none,fontsize=12]; 
gaze [color=none,fontsize=12]; 
#gazf [color=none,fontsize=12]; 
gazg [color=none,fontsize=12]; 
gazh [color=none,fontsize=12]; 
gazi [color=none,fontsize=12]; 
gazj [color=none,fontsize=12]; 
gazk [color=none,fontsize=12]; 
gazl [color=none,fontsize=12]; 
gazm [color=none,fontsize=12]; 
gazn [color=none,fontsize=12]; 
gazo [color=none,fontsize=12]; 
gazp [color=none,fontsize=12]; 
gazq [color=none,fontsize=12]; 
gazr [color=none,fontsize=12]; 
gazs [color=none,fontsize=12]; 
gazt [color=none,fontsize=12]; 
gazu [color=none,fontsize=12]; 
gazv [color=none,fontsize=12]; 
gazw [color=none,fontsize=12]; 
gazx [color=none,fontsize=12]; 
gazy [color=none,fontsize=12]; 

root -> a [minlen=2]; 
root -> b [minlen=2]; 
root -> c [minlen=2]; 
root -> d [minlen=2]; 
root -> e [minlen=2]; 
root -> f [minlen=2]; 
root -> g [minlen=2]; 
root -> h [minlen=2]; 
root -> i [minlen=2]; 
root -> j [minlen=2]; 
root -> k [minlen=2]; 
root -> l [minlen=2]; 
root -> m [minlen=2]; 
root -> n [minlen=2]; 
root -> o [minlen=2]; 
root -> p [minlen=2]; 
root -> q [minlen=2]; 
root -> r [minlen=2]; 
root -> s [minlen=20]; 
root -> t [minlen=2]; 
root -> u [minlen=2]; 
root -> v [minlen=2]; 
root -> w [minlen=2]; 
root -> x [minlen=2]; 
root -> y [minlen=2]; 
root -> 0 [minlen=2]; 
root -> 1 [minlen=2]; 
root -> 2 [minlen=2]; 
root -> 3 [minlen=2]; 
root -> 4 [minlen=2]; 
root -> 5 [minlen=2]; 
root -> 6 [minlen=2]; 
root -> 7 [minlen=2]; 
root -> 8 [minlen=2]; 
root -> 9 [minlen=2]; 
root -> "." [minlen=2]; 

g -> ga ; 
g -> gb ; 
g -> gc ; 
g -> gd ; 
g -> ge ; 
g -> gf ; 
g -> gg ; 
g -> gh ; 
g -> gi ; 
g -> gj ; 
g -> gk ; 
g -> gl ; 
g -> gm ; 
g -> gn ; 
g -> go ; 
g -> gp ; 
g -> gq ; 
g -> gr ; 
g -> gs ; 
g -> gt ; 
g -> gu ; 
g -> gv ; 
g -> gw ; 
g -> gx ; 
g -> gy ; 

ga -> gaa ; 
ga -> gab ; 
ga -> gac ; 
ga -> gad ; 
ga -> gae ; 
ga -> gaf ; 
ga -> gag ; 
ga -> gah ; 
ga -> gai ; 
ga -> gaj ; 
ga -> gak ; 
ga -> gal ; 
ga -> gam ; 
ga -> gan ; 
ga -> gao ; 
ga -> gap ; 
ga -> gaq ; 
ga -> gaz ; 
ga -> gas ; 
ga -> gat ; 
ga -> gau ; 
ga -> gav ; 
ga -> gaw ; 
ga -> gax ; 
ga -> gay ; 

gaz -> gaza ; 
gaz -> gazb ; 
gaz -> gazc ; 
gaz -> gazd ; 
gaz -> gaze ; 
gaz -> gazf ; 
gaz -> gazg ; 
gaz -> gazh ; 
gaz -> gazi ; 
gaz -> gazj ; 
gaz -> gazk ; 
gaz -> gazl ; 
gaz -> gazm ; 
gaz -> gazn ; 
gaz -> gazo ; 
gaz -> gazp ; 
gaz -> gazq ; 
gaz -> gazr ; 
gaz -> gazs ; 
gaz -> gazt ; 
gaz -> gazu ; 
gaz -> gazv ; 
gaz -> gazw ; 
gaz -> gazx ; 
gaz -> gazy ; 

gazo -> "Blue Tuesday" ; 
"Blue Tuesday" [ fontsize=10]; 

// Layout engines: circo dot fdp neato nop nop1 nop2 osage patchwork sfdp twopi 

} 

Cette sortie est générée avec:

twopi -os1.png -Tpng s1.dot 

I Je poste ici parce que l'impression est assez épouvantable. Tous les nœuds accrochés de "gaz" se chevauchent; J'ai essayé de spécifier nodesep et il est simplement ignoré. Je voudrais voir les lignes de la racine aux lettres simples plus éloignées, mais encore une fois, je ne peux pas contrôler cela.

Cela semble être un bug dans twopi. La documentation dit qu'il devrait clairement suivre ces directives, mais cela ne semble pas.

Mes questions:

  1. Est-il possible de faire twopi comporter? A défaut, y a-t-il un meilleur moteur de mise en page à utiliser?

Merci.

Répondre

17

J'ai trouvé que twopi était le plus difficile à utiliser avec tous les moteurs de rendu graphviz.

J'ai apporté quelques petites modifications à votre fichier de points d'origine. Le graphique rendu est montré ci-dessous.

Voici les diffs:

attributs graphique:

  • size = "7.75,10.25"; // s'assure que graphe entier correspond à un seul 8,5 x 11 page;

  • orientation = "paysage";

  • ranksep = 3,0; nodesep = 2,0;

  • supprimé: "racine = racine"; et "chevauchement = true"

attributs de bord:

  • i régler le poids de bord égale à 0,1 pour tous les bords: [poids = 0.1]

La réduction du poids de bord de 90% pour l'ensemble des bords a pour effet net d'augmenter la longueur de l'arête (ou plus précisément de détente de la contrainte sur la longueur du bord); de toute évidence, cela aide les nœuds à "se désengager". Faire cela augmente également la distance entre "g" et "root", donnant plus de place aux nœuds de "root" de l'enfant.

J'ai aussi pincé quelques attributs purement esthétiques - ne pas avoir d'effet sur la mise en page, mais pour moi, semblent importe quand vous devez dessiner même un graphique moyennement dense sur une seule page:

attributs graphiques:

fontname = "Helvetica"; fontsize = 13

attributs de noeud:

"root" [color = "goldenrod4", forme = "diamant", style = "rempli"]

"g" [color = » lightsteelblue2" , forme = "diamant", style = "rempli"]

"ga" [color = "darkorange", forme = "diamant", style = "rempli"]

"gaz" [couleur = "bisque4", shape = "diamond", style = "rempli"]

attribue bord:

[arrowsize = 0,4, penwidth = 1,2] alt text

+0

Merci. twopi est clairement bogué. S'il y avait une autre alternative, j'irais avec. Aucune suggestion? – vy32

+2

eh bien ... il ne m'aurait pas semblé d'utiliser twopi pour rendre un graphique de ce genre, mais après l'avoir vu, je pense que vous avez la bonne idée. FWIW, pour quelque chose comme votre graphique, ma première pensée serait d'utiliser le moteur "circo" (également dans la famille graphviz - devrait être dans votre build). – doug

+0

J'ai essayé 'circo' et je n'étais pas satisfait des résultats. Mais merci! – vy32