Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Graphviz Alternatives? [closed]

I'm looking for alternatives to GraphViz. I've been using GraphViz for more than a decade and it's okay, but the layouts are just not producing publication-quality graphs for me given my input data. Sometimes my data is really big and complex, and sometimes it isn't, but GraphViz never really makes stuff that's beautiful.

What other graph visualization tools are people using? Ideally there's one that uses the GraphViz syntax for input file.

Here for example is an input file I'm playing with:

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

(All of the fontsize=96 are my vain attempt to get graphviz to make the font more readable, but apparently it doesn't work.)

like image 764
vy32 Avatar asked Jan 26 '11 23:01

vy32


People also ask

Is Graphviz open source?

The software is available under an Open Source license. The article[1] provides a detailed description of the package.

How do I open a Dovi file in Graphviz?

You might have to set the paths to the Graphviz binaries in Zgrviewer's preferences. File -> Open -> Open with dot -> SVG pipeline (standard) ... Pick your . dot file.

What is Pydot in Python?

Pydot is a Python library, also written in Python, that "serves as a graphical interface to Graphviz, an open source graph visualization software. GraphViz is written in DOT language, but Pydot provides the ability to parse and dump data, between Python and DOT."[


2 Answers

Gephi is an amazingly good, open source graph visualization software. It uses dot language like GraphViz.

like image 116
Mert Nuhoglu Avatar answered Sep 20 '22 17:09

Mert Nuhoglu


What's there not to like?

I personally wouldn't use box3d, and my choice of colors probably hurts your eyes...

(full size image: http://i.stack.imgur.com/MTe6n.png )

graphviz output

EDIT:

Here's the modified dot code - I reorganized it a little bit:

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

You can see and modify it here: http://graph.gafol.net/dLQGPHJRc - this site uses nice presets for fonts and fontsize.

Please note that I added start=random, therefore the layout may be different every time you create the graph.

like image 43
marapet Avatar answered Sep 19 '22 17:09

marapet