2011-01-26 4 views
51

Я ищу альтернативы GraphViz. Я использую GraphViz уже более десяти лет, и все в порядке, но макеты просто не производят графы качества публикации для меня, учитывая мои входные данные. Иногда мои данные действительно большие и сложные, и иногда это не так, но GraphViz никогда не делает вещи прекрасными.Альтернативы Graphviz?

Какие еще инструменты визуализации графиков используются людьми? В идеале есть тот, который использует синтаксис GraphViz для входного файла.

Вот, например, является входной файл я играю с:

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

(Вся fontsize=96 моя тщетная попытка получить graphviz сделать шрифт более читаемым, но, видимо, он не работает .)

+0

Ответы на эти вопросы могут быть полезны здесь: http://stackoverflow.com/questions/238724/visualizing-undirected-graph-thats-too-large-for-graphviz http://stackoverflow.com/questions/ 243616/visualization-tools-for-huge-graphs http://stackoverflow.com/questions/438419/does-anyone-know-a-good-network-graph-visualization-software-just-add-data – las3rjock

ответ

23

Что не нравится?

лично я бы не использовать box3d, и мой выбор цветов, вероятно, режет глаза ...

(полный размер: http://i.stack.imgur.com/MTe6n.png)

graphviz output

EDIT:

Вот модифицированный точечный код. Я немного его реорганизовал:

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

Вы можете увидеть и изменить его здесь: http://graph.gafol.net/dLQGPHJRc - этот сайт использует красивые пресеты для шрифтов и шрифтов.

Обратите внимание: я добавил start=random, поэтому макет может быть разным при создании графика.

+3

Он работает, но макет действительно не объясняет, что происходит. Возьмите большую массу в центре слева с большим количеством перекрывающихся линий. Да, график выложен. Но действительно ли это поможет вам понять, что происходит? --- PS --- ПРИЯТНЫЕ ЦВЕТА! – vy32

+0

Какие изменения вы внесли в мой файл, чтобы получить этот результат. Когда я пробежал по графику, я получил то, что не выглядело так хорошо. – vy32

+2

На самом деле, я думаю, что граф объясняет по крайней мере 3 вещи визуально: Есть два типа узлов. Существует 8 различных групп узлов, которые не связаны между собой. Есть 7 небольших групп, имеющих один или два «овальных» узла, и есть одна большая группа с несколькими «овальными» узлами. Я согласен с тем, что большая группа может быть выложена лучше, уменьшая перекрывающиеся края - попробуйте ссылку в отредактированном сообщении, параметр rand должен каждый раз приводить к разному компоновке, а некоторые лучше других. – marapet

33

Gephi - удивительно хорошее программное обеспечение визуализации с открытым исходным кодом. Он использует язык точек, например GraphViz.

+7

Gephi очень гладкий, но, к сожалению, не поддерживает подграфы в точке (и некоторые другие функции. Из [Gephi docs] (https://gephi.org/users/supported-graph-formats/graphviz-dot-format/): «В настоящее время Gephi не обеспечивает полную поддержку формата DOT. Подсчеты не поддерживаются, а также не настраиваемые атрибуты или размер. При наличии импортируются только метки и цвета. Поддерживаются режимы прямого и неориентированного графиков». – Bonlenfum