web-dev-qa-db-fra.com

Alternatives à Graphviz?

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é publication pour moi compte tenu de mes données d'entrée. Parfois, mes données sont vraiment volumineuses et complexes, et parfois ce n'est pas le cas, mais GraphViz ne fait jamais vraiment des choses belles.

Quels autres outils de visualisation de graphiques les gens utilisent-ils? 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 avec lequel je joue:

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

(La totalité de la fontsize=96 est ma vaine tentative pour obtenir graphviz pour rendre la police plus lisible, mais apparemment cela ne fonctionne pas.)

57
vy32

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

Personnellement, je n'utiliserais pas box3d, et mon choix de couleurs fait probablement mal aux yeux ...

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

graphviz output

ÉDITER:

Voici le code dot 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 jolis préréglages pour les polices et la taille de police.

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

22
marapet

Gephi est un logiciel de visualisation de graphes open source incroyablement bon. Il utilise un langage à points comme GraphViz.

34
Mert Nuhoglu