2011-01-26 23 views
51

Estoy buscando alternativas a GraphViz. He estado usando GraphViz por más de una década y está bien, pero los diseños simplemente no están produciendo gráficos de calidad de publicación dado mis datos de entrada. A veces mis datos son realmente grandes y complejos, y otras veces no, pero GraphViz nunca hace cosas realmente bellas.Graphviz Alternativas?

¿Qué otras herramientas de visualización de gráficos están utilizando las personas? Idealmente, hay uno que usa la sintaxis de GraphViz para el archivo de entrada.

Aquí, por ejemplo, es un archivo de entrada que estoy jugando con:

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

(Todo el fontsize=96 son mi vano intento de conseguir graphviz hacer la fuente más fácil de leer, pero al parecer no funciona .)

+0

Las respuestas a estas preguntas pueden ser útiles aquí: http://stackoverflow.com/questions/238724/visualizing-undirected-graph-thats-too-large-for-graphviz http://stackoverflow.com/questions/ 243616/visualización-herramientas-para-grandes-gráficos http://stackoverflow.com/questions/438419/does-anyone-know-a-good-network-graph-visualization-software-just-add-data – las3rjock

Respuesta

23

¿Qué hay para no gustar?

yo personalmente no utilizar box3d, y mi elección de los colores, probablemente, daño a los ojos ...

(imagen a tamaño completo: http://i.stack.imgur.com/MTe6n.png)

graphviz output

EDIT:

Aquí está el código de punto modificado: lo reorganicé un poco:

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";  
} 

Puede verlo y modificarlo aquí: http://graph.gafol.net/dLQGPHJRc - este sitio utiliza buenos preajustes para fuentes y tamaño de fuente.

Tenga en cuenta que agregué start=random, por lo tanto, el diseño puede ser diferente cada vez que crea el gráfico.

+3

Funciona, pero el diseño realmente no explica lo que está pasando. Tome la gran masa en el centro izquierdo con muchas líneas superpuestas. Sí, el gráfico está presentado. Pero, ¿realmente te ayuda a entender lo que está pasando? --- PS --- ¡COLORES AGRADABLES! – vy32

+0

¿Qué cambios hizo en mi archivo para obtener esta salida? Cuando revisé graphviz, obtuve algo que no se veía tan bien. – vy32

+2

En realidad, creo que el gráfico explica al menos 3 cosas visualmente: hay dos tipos de nodos. Hay 8 diferentes grupos de nodos que no están conectados entre sí. Hay 7 grupos pequeños, que tienen uno o dos nodos "ovales", y hay un grupo más grande con varios nodos "ovales". Estoy de acuerdo en que el grupo grande podría ser mejor distribuido, reduciendo los bordes superpuestos: pruebe el enlace en la publicación editada, el parámetro rand debería dar como resultado un diseño diferente cada vez, algunos mejores que otros. – marapet

33

Gephi es un software de visualización de gráficos de código abierto sorprendentemente bueno. Utiliza lenguaje de puntos como GraphViz.

+7

Gephi es muy hábil, pero lamentablemente no admite subgrafos en punto (y algunas otras características. De los [documentos Gephi] (https://gephi.org/users/supported-graph-formats/graphviz-dot-format/): "Gephi actualmente no proporciona un soporte completo del formato DOT. No se admiten subgráficos ni atributos o tamaños personalizados. Solo se importan etiquetas y colores si están presentes. Se admiten gráficos dirigidos y no dirigidos". – Bonlenfum