2011-01-26 3 views
51

Je cherche des alternatives à GraphViz. J'utilise GraphViz depuis plus d'une décennie et ça va, mais les mises en page ne produisent tout simplement pas de graphiques de qualité de publication pour mes données d'entrée. Parfois, mes données sont vraiment grandes et complexes, et parfois ce n'est pas le cas, mais GraphViz ne fait jamais vraiment de belles choses.Alternatives Graphviz?

Quels autres outils de visualisation graphique sont utilisés par les utilisateurs? Idéalement, il y en a un qui utilise la syntaxe GraphViz pour le fichier d'entrée.

Voici par exemple un fichier d'entrée que je joue avec:

digraph mdc {  
    size="4,8";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0PAN0-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0047-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0048-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0050-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0051-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0052-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0009-FOO";  
    "KJ16:76:A2:60:6E" -> "JUNK-0413-FOO";  
    "KJ16:76:A2:60:6E" -> "JUNK-0414-FOO";  
    "KJE0:D0:13:14:94" -> "GEORGE42-FRED";  
    "KJE0:D0:13:14:94" -> "MY5-30-FRED";  
    "KJ50:04:EE:6C:F9" -> "PSPAN-036-FRED";  
    "KJ50:04:EE:6C:F9" -> "GEORGE02-FRED";  
    "KJ50:04:EE:6C:F9" -> "GEORGE04-FRED";  
    "KJ1B:B9:9B:D5:BB" -> "JUNK-0047-FOO";  
    "KJ1B:B9:9B:D5:BB" -> "JUNK-0048-FOO";  
    "KJ05:5F:EF:14:PAN" -> "thPAN-PAN-FRED";  
    "KJ05:5F:EF:14:PAN" -> "cn20-PAN-FRED";  
    "KJ15:F2-KIM-:E5YF" -> "thPAN-PAN-FRED";  
    "KJ15:F2-KIM-:E5YF" -> "cn20-PAN-FRED";  
    "KJ0E:90:D5:E6:5E" -> "JUNK-0051-FOO";  
    "KJ0E:90:D5:E6:5E" -> "JUNK-0009-FOO";  
    "KJ1E:90:DE:F1:07" -> "JUNK-0051-FOO";  
    "KJ1E:90:DE:F1:07" -> "JUNK-0009-FOO";  
    "KJ1E:90:D5:EE:5E" -> "JUNK-0051-FOO";  
    "KJ1E:90:D5:EE:5E" -> "JUNK-0047-FOO";  
    "KJ1E:90:D5:EE:5E" -> "JUNK-0009-FOO";  
    "KJ04:ED:66:C7:19" -> "JUNK-0562-FOO";  
    "KJ04:ED:66:C7:19" -> "JUNK-0561-FOO";  
    "KJ1B:B9:9C-PET-67" -> "JUNK-0047-FOO";  
    "KJ1B:B9:9C-PET-67" -> "JUNK-0049-FOO";  
    "PAN:KJ5E:7F:FF:FA" -> "JUNK-0PAN4-FOO";  
    "PAN:KJ5E:7F:FF:FA" -> "PSPAN-021-FRED";  
    "PAN:KJ5E:7F:FF:FA" -> "GEORGE38-FRED";  
    "PAN:KJ5E:7F:FF:FA" -> "JUNK-0095-FOO";  
    "PAN:KJ5E:7F:FF:FA" -> "JUNK-PAN18-FOO";  
    "KJ1B:B9:9B:D3:61" -> "JUNK-0PAN0-FOO";  
    "KJ1B:B9:9B:D3:61" -> "JUNK-0051-FOO";  
    "KJ1B:B9:9B:D3:61" -> "JUNK-0052-FOO";  
    "KJ1B:B9:9B:D3:61" -> "JUNK-0009-FOO";  
    "KJ26:18:BD:D9:E9" -> "JUNK-0562-FOO";  
    "KJ26:18:BD:D9:E9" -> "JUNK-0561-FOO";  
    "KJD0:B7:69:0A-VET" -> "cn4-06-FRED";  
    "KJD0:B7:69:0A-VET" -> "1039-FRED";  
"KJ50:04:EE:6C:F9" [fontsize=96,shape=oval]  
"KJ1E:90:DE:F1:07" [fontsize=96,shape=oval]  
"KJ05:5F:EF:14:PAN" [fontsize=96,shape=oval]  
"KJ26:18:BD:D9:E9" [fontsize=96,shape=oval]  
"KJ1B:B9:9B:D5:BB" [fontsize=96,shape=oval]  
"KJE0:D0:13:14:94" [fontsize=96,shape=oval]  
"KJ0E:90:D5:E6:5E" [fontsize=96,shape=oval]  
"KJ1E:A6:PAN:9E:3A" [fontsize=96,shape=oval]  
"KJ1E:90:D5:EE:5E" [fontsize=96,shape=oval]  
"PAN:KJ5E:7F:FF:FA" [fontsize=96,shape=oval]  
"KJ1B:B9:9B:D3:61" [fontsize=96,shape=oval]  
"KJ1B:B9:9C-PET-67" [fontsize=96,shape=oval]  
"KJ15:F2-KIM-:E5YF" [fontsize=96,shape=oval]  
"KJD0:B7:69:0A-VET" [fontsize=96,shape=oval]  
"KJ04:ED:66:C7:19" [fontsize=96,shape=oval]  
"KJ16:76:A2:60:6E" [fontsize=96,shape=oval]  
"JUNK-0009-FOO" [fontsize=96,shape=box3d]  
"GEORGE38-FRED" [fontsize=96,shape=box3d]  
"JUNK-0413-FOO" [fontsize=96,shape=box3d]  
"JUNK-0561-FOO" [fontsize=96,shape=box3d]  
"JUNK-0050-FOO" [fontsize=96,shape=box3d]  
"cn20-PAN-FRED" [fontsize=96,shape=box3d]  
"JUNK-PAN18-FOO" [fontsize=96,shape=box3d]  
"1039-FRED" [fontsize=96,shape=box3d]  
"JUNK-0095-FOO" [fontsize=96,shape=box3d]  
"PSPAN-021-FRED" [fontsize=96,shape=box3d]  
"JUNK-0048-FOO" [fontsize=96,shape=box3d]  
"JUNK-0052-FOO" [fontsize=96,shape=box3d]  
"GEORGE42-FRED" [fontsize=96,shape=box3d]  
"JUNK-0049-FOO" [fontsize=96,shape=box3d]  
"GEORGE04-FRED" [fontsize=96,shape=box3d]  
"cn4-06-FRED" [fontsize=96,shape=box3d]  
"thPAN-PAN-FRED" [fontsize=96,shape=box3d]  
"GEORGE02-FRED" [fontsize=96,shape=box3d]  
"JUNK-0PAN0-FOO" [fontsize=96,shape=box3d]  
"MY5-30-FRED" [fontsize=96,shape=box3d]  
"JUNK-0047-FOO" [fontsize=96,shape=box3d]  
"JUNK-0562-FOO" [fontsize=96,shape=box3d]  
"JUNK-0PAN4-FOO" [fontsize=96,shape=box3d]  
"JUNK-0051-FOO" [fontsize=96,shape=box3d]  
"PSPAN-036-FRED" [fontsize=96,shape=box3d]  
"JUNK-0414-FOO" [fontsize=96,shape=box3d]  
}  

(Toutes les fontsize=96 sont ma vaine tentative d'obtenir graphviz pour rendre la police plus lisible, mais apparemment cela ne fonctionne pas .)

+0

Les réponses à ces questions peuvent être utiles ici: http://stackoverflow.com/questions/238724/visualizing-undirected-graph-thats-too-large-for-graphviz http://stackoverflow.com/questions/ 243616/visualization-tools-for-énormes-graphiques http://stackoverflow.com/questions/438419/does-anyone-know-a-good-network-graph-visualization-software-just-add-data – las3rjock

Répondre

23

Qu'y a-t-il à ne pas aimer?

Personnellement, je n'utiliser BOX3D, et mon choix de couleurs fait mal sans doute vos yeux ...

(image en taille réelle: http://i.stack.imgur.com/MTe6n.png)

graphviz output

EDIT:

Voici le code de point modifié - Je l'ai réorganisé un peu:

digraph { 
size="11,11"; 
layout=neato; 
overlap=false; 
splines=true; 
pack=true; 
start="random"; 
sep=0.1; 

edge [len=2]; 
node[shape=oval,style=filled,fillcolor="#DCA80A"]; 

"KJ50:04:EE:6C:F9" 
"KJ1E:90:DE:F1:07" 
"KJ05:5F:EF:14:PAN" 
"KJ26:18:BD:D9:E9" 
"KJ1B:B9:9B:D5:BB" 
"KJE0:D0:13:14:94" 
"KJ0E:90:D5:E6:5E" 
"KJ1E:A6:PAN:9E:3A" 
"KJ1E:90:D5:EE:5E" 
"PAN:KJ5E:7F:FF:FA" 
"KJ1B:B9:9B:D3:61" 
"KJ1B:B9:9C-PET-67" 
"KJ15:F2-KIM-:E5YF" 
"KJD0:B7:69:0A-VET" 
"KJ04:ED:66:C7:19" 
"KJ16:76:A2:60:6E" 

node[shape=box3d,style=filled,fillcolor="#B1C3D4"]; 
"JUNK-0009-FOO" 
"GEORGE38-FRED" 
"JUNK-0413-FOO" 
"JUNK-0561-FOO" 
"JUNK-0050-FOO" 
"cn20-PAN-FRED" 
"JUNK-PAN18-FOO" 
"1039-FRED" 
"JUNK-0095-FOO" 
"PSPAN-021-FRED" 
"JUNK-0048-FOO" 
"JUNK-0052-FOO" 
"GEORGE42-FRED" 
"JUNK-0049-FOO" 
"GEORGE04-FRED" 
"cn4-06-FRED" 
"thPAN-PAN-FRED" 
"GEORGE02-FRED" 
"JUNK-0PAN0-FOO" 
"MY5-30-FRED" 
"JUNK-0047-FOO" 
"JUNK-0562-FOO" 
"JUNK-0PAN4-FOO" 
"JUNK-0051-FOO" 
"PSPAN-036-FRED" 
"JUNK-0414-FOO" 

    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0PAN0-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0047-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0048-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0050-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0051-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0052-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0009-FOO";  
    "KJ16:76:A2:60:6E" -> "JUNK-0413-FOO";  
    "KJ16:76:A2:60:6E" -> "JUNK-0414-FOO";  
    "KJE0:D0:13:14:94" -> "GEORGE42-FRED";  
    "KJE0:D0:13:14:94" -> "MY5-30-FRED";  
    "KJ50:04:EE:6C:F9" -> "PSPAN-036-FRED";  
    "KJ50:04:EE:6C:F9" -> "GEORGE02-FRED";  
    "KJ50:04:EE:6C:F9" -> "GEORGE04-FRED";  
    "KJ1B:B9:9B:D5:BB" -> "JUNK-0047-FOO";  
    "KJ1B:B9:9B:D5:BB" -> "JUNK-0048-FOO";  
    "KJ05:5F:EF:14:PAN" -> "thPAN-PAN-FRED";  
    "KJ05:5F:EF:14:PAN" -> "cn20-PAN-FRED";  
    "KJ15:F2-KIM-:E5YF" -> "thPAN-PAN-FRED";  
    "KJ15:F2-KIM-:E5YF" -> "cn20-PAN-FRED";  
    "KJ0E:90:D5:E6:5E" -> "JUNK-0051-FOO";  
    "KJ0E:90:D5:E6:5E" -> "JUNK-0009-FOO";  
    "KJ1E:90:DE:F1:07" -> "JUNK-0051-FOO";  
    "KJ1E:90:DE:F1:07" -> "JUNK-0009-FOO";  
    "KJ1E:90:D5:EE:5E" -> "JUNK-0051-FOO";  
    "KJ1E:90:D5:EE:5E" -> "JUNK-0047-FOO";  
    "KJ1E:90:D5:EE:5E" -> "JUNK-0009-FOO";  
    "KJ04:ED:66:C7:19" -> "JUNK-0562-FOO";  
    "KJ04:ED:66:C7:19" -> "JUNK-0561-FOO";  
    "KJ1B:B9:9C-PET-67" -> "JUNK-0047-FOO";  
    "KJ1B:B9:9C-PET-67" -> "JUNK-0049-FOO";  
    "PAN:KJ5E:7F:FF:FA" -> "JUNK-0PAN4-FOO";  
    "PAN:KJ5E:7F:FF:FA" -> "PSPAN-021-FRED";  
    "PAN:KJ5E:7F:FF:FA" -> "GEORGE38-FRED";  
    "PAN:KJ5E:7F:FF:FA" -> "JUNK-0095-FOO";  
    "PAN:KJ5E:7F:FF:FA" -> "JUNK-PAN18-FOO";  
    "KJ1B:B9:9B:D3:61" -> "JUNK-0PAN0-FOO";  
    "KJ1B:B9:9B:D3:61" -> "JUNK-0051-FOO";  
    "KJ1B:B9:9B:D3:61" -> "JUNK-0052-FOO";  
    "KJ1B:B9:9B:D3:61" -> "JUNK-0009-FOO";  
    "KJ26:18:BD:D9:E9" -> "JUNK-0562-FOO";  
    "KJ26:18:BD:D9:E9" -> "JUNK-0561-FOO";  
    "KJD0:B7:69:0A-VET" -> "cn4-06-FRED";  
    "KJD0:B7:69:0A-VET" -> "1039-FRED";  
} 

Vous pouvez le voir et le modifier ici: http://graph.gafol.net/dLQGPHJRc - ce site utilise de bons préréglages pour les polices et la taille des caractères.

Veuillez noter que j'ai ajouté start=random, donc la disposition peut être différente chaque fois que vous créez le graphique.

+3

Cela fonctionne, mais la disposition n'explique pas vraiment ce qui se passe. Prenez la grande masse au centre gauche avec beaucoup de lignes qui se chevauchent. Oui, le graphique est présenté. Mais cela vous aide-t-il vraiment à comprendre ce qui se passe? --- PS --- BELLES COULEURS! – vy32

+0

Quels changements avez-vous apporté à mon fichier pour obtenir cette sortie. Quand je suis tombé sur graphviz, j'ai quelque chose qui n'a pas l'air si bon. – vy32

+2

En fait, je pense que le graphique explique au moins 3 choses visuellement: Il existe deux types de nœuds. Il y a 8 différents groupes de nœuds qui ne sont pas connectés entre eux. Il y a 7 petits groupes, ayant un ou deux nœuds "ovales", et il y a un groupe plus grand avec plusieurs nœuds "ovales". Je suis d'accord que le grand groupe pourrait être mieux mis en place, en réduisant les bords qui se chevauchent - essayez le lien dans le poste édité, le paramètre rand devrait entraîner une mise en page différente à chaque fois, certains mieux que d'autres. – marapet

33

Gephi est un logiciel de visualisation de graphe open source étonnamment bon. Il utilise le langage par points comme GraphViz.

+7

Gephi est très lisse, mais malheureusement ne supporte pas les sous-graphes dans le point (et d'autres fonctionnalités.) À partir de la [Gephi docs] (https://gephi.org/users/supported-graph-formats/graphviz-dot-format/): "Gephi ne fournit pas actuellement un support complet du format DOT Les sous-graphes ne sont pas supportés, ni les attributs personnalisés ni la taille Seuls les labels et les couleurs sont importés si présents Les graphes dirigés et non orientés sont supportés." – Bonlenfum