用graphviz布置一个大图

时间:2012-11-16 13:17:48

标签: python graphviz

我的女儿们做了一个与井字游戏不同的游戏。当然,当我和他们一起玩的时候,我开始在我的脑袋里蛮力......

所以在午餐时间,我制作了一个快速的小Python脚本来“解决”游戏。我希望以图形方式查看结果,因此我生成了所有合法移动的点文件:

I've pasted the data here

当我尝试使用dot渲染它时,它需要永远,我会在几个小时后中止它。

如果我使用neatosfdp等渲染它,则需要几秒或更短时间,但实际上无法读取布局:

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

sfdp

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

neato

我很高兴得到的图像是几百万像素。

我如何布置并渲染如此大的图形?我对非点建议持开放态度,比如可以进行布局的Python库。

somewhat related link)功能

添加my Python script来解决游戏并生成点文件

4 个答案:

答案 0 :(得分:43)

试试这个:

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

-Goverlap保留布局,但统一缩放,直到没有更多节点重叠。当你缩小时,我能够得到一个大约77MB的PNG。 enter image description here

答案 1 :(得分:8)

您仍然可以使用neato但修改.dot文件:[splines = true overlap = false]

您的文件应如下所示:

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

如果您只是放入第二行“graph [splines = true overlap = false]”并且其他所有内容保持不变,它应该有效。

答案 2 :(得分:1)

除了其他答案,您还可以使用其他工具,例如Gephi

  

Gephi是用于各种图形和网络的领先的可视化和探索软件。 Gephi是开源的,免费的。

在Windows,Mac OS X和Linux上运行。

答案 3 :(得分:1)

我在我的大图(svg)上发现默认值为-Kneato的点太慢。我最终使用

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