выкладка большого графика с помощью graphviz

Мои дочери придумали игру, похожую на крестики-нолики. Конечно, когда я играл с ними, я начал перебирать это в своей голове...

Итак, в обеденный перерыв я сделал небольшой скрипт на Python, чтобы «решить» игру. И я хотел увидеть результаты графически, поэтому я создал точечный файл всех допустимых ходов:

Я вставил сюда данные.

Когда я пытаюсь отрендерить его с помощью dot, это занимает вечность, и я прерываю его через несколько часов.

Если я визуализирую его с помощью neato или sfdp и т. д., это займет несколько секунд или меньше, но на самом деле макет невозможно прочитать:

sfdp -x -Tpng data.dot > data.png

sfdp

neato -x -Tpng data.dot > data.png

neato

Я был бы рад, если бы полученное изображение было в несколько мегапикселей.

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

(ссылка по теме)

Добавлено: мой скрипт Python для решения игры и создания файла точек.


person Will    schedule 16.11.2012    source источник
comment
Сколько узлов/ребер в графе? Вы можете попробовать gephi.org   -  person job    schedule 16.11.2012
comment
@gephi.org 744 узла и 4361 ребро. Точка, которую я оставил работающей, только что вышла из строя в этом точечном файле.   -  person Will    schedule 16.11.2012
comment
@Will Можете ли вы дать какое-то представление о времени выполнения этого набора данных?   -  person jarandaf    schedule 15.10.2015


Ответы (4)


Попробуй это:

sfdp -x -Goverlap=scale -Tpng data.dot > data.png

-Goverlap сохраняет макет, но равномерно масштабирует все до тех пор, пока больше не будет перекрытий узлов. Мне удалось получить PNG размером ~ 77 МБ, который выглядит так при уменьшении масштаба. введите здесь описание изображения

person job    schedule 16.11.2012
comment
Это выглядит очень многообещающе; несмотря на то, что у меня 4 ГБ ОЗУ, я нажимаю swap, как только пытаюсь просмотреть сгенерированное изображение :( Любые советы о том, как просматривать и изменять размер таких больших изображений? - person Will; 17.11.2012
comment
@will Я смог открыть его в GIMP, но это было медленно. Вы можете запустить dot -Txxx, чтобы получить список других доступных выходных форматов. Я также смог указать -Tx11, чтобы вызвать интерактивное отображение макета (колесо прокрутки для масштабирования, перетаскивание средней кнопкой мыши для панорамирования). - person job; 17.11.2012
comment
да, я не мог ничего получить, чтобы просмотреть его, и, кроме того, у меня должна быть оперативная память даже на 16-битных RGB-холстах. Я тоже мельком взглянул на nip2, но не смог понять, как сохранить файл.. Я просто признал поражение, написал об этом в блоге и пошел дальше! Спасибо williamedwardscoder.tumblr.com/post/35858593837/крестики-нолики - person Will; 17.11.2012
comment
Как вы можете сделать его иерархическим, а не круговым? - person omega; 24.01.2014
comment
Можете ли вы дать некоторую информацию о том, сколько времени потребовалось для создания. - person Techdragon; 25.08.2014
comment
Спасибо за совет. Любой статический формат был слишком тяжелым в моем случае. Единственный способ визуализировать это — сгенерировать xdot в качестве вывода, а затем использовать это: github.com/ jrfonseca/xdot.py И вы можете использовать командную строку следующим образом, чтобы визуализатор учитывал информацию о макете, встроенную в файл xdot: xdot --no-filter output.xdot - person Thiago Ganzarolli; 19.11.2018

вы все еще можете использовать Neato, но изменить файл .dot, добавив: [splines=true перекрытие=false]

И ваш файл должен выглядеть так:

digraph luffarschack {
    graph [splines=true overlap=false];
    node [shape=none]; 
        ...here your nodes;
        ...here your edges;
}

Это должно работать, если вы просто вставите во вторую строку «граф [сплайны = истинное перекрытие = ложное]», а все остальное останется прежним.

person DanielBoloc    schedule 03.07.2014
comment
Ранее он распечатал Предупреждение: некоторые узлы с запасом (3.20,3.20) соприкасаются - возвращаются к прямым краям, а затем через 13 минут OSX выводит диалог принудительного выхода, потому что в моей системе закончились 16 ГБ ОЗУ! Я хотел бы увидеть макет, который получается, если вам удастся его запустить? - person Will; 04.07.2014
comment
Сделано и сделано... просто дайте мне адрес электронной почты, и я вышлю вам файл .svg (4 МБ)... Я не могу найти здесь опцию загрузки - person DanielBoloc; 05.07.2014
comment
на странице моего профиля есть адрес электронной почты; очень признателен! - person Will; 05.07.2014
comment
Извините, я думал, что это было общедоступно (varfar на Yahoo Co Великобритания) - person Will; 10.07.2014
comment
Это помогло мне, но я пропустил splines=true, потому что это было очень медленно. - person jnnnnn; 03.04.2019

В дополнение к другим ответам вы можете использовать другие инструменты, такие как Gephi.

Gephi — ведущее программное обеспечение для визуализации и исследования всех видов графиков и сетей. Gephi является бесплатным и открытым исходным кодом.

Работает на Windows, Mac OS X и Linux.

person Christophe Roussy    schedule 10.08.2016

Я обнаружил, что точка со значением по умолчанию -Kneato слишком медленная на моем большом графике (svg). Я закончил тем, что использовал

dot -Ksfdp -ooutput.svg -Tsvg input.dot

где input.dot был

digraph {
    graph [overlap=false];
    a -> {b c d e f g}
    b -> {c e g x f}
    ...
}
person jnnnnn    schedule 03.04.2019