用graphviz绘制大型图形

2024-06-16 14:37:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我的女儿们做了一个游戏,和tic tac toe没什么两样。当然,当我和他们玩的时候,我开始残忍地强迫他们进入我的脑海。。。

所以在午餐时间,我制作了一个快速的小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来解决游戏并生成点文件


Tags: 文件图形游戏datapng布局ticdot
3条回答

试试这个:

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

-Goverlap保留布局,但统一地向上缩放,直到不再有节点重叠。我可以得到一个~77mbpng,当你缩小时,它看起来是这样的。 enter image description here

您仍然可以使用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”,其他的东西都保持不变,那么它应该可以工作。

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

Gephi is the leading visualization and exploration software for all kinds of graphs and networks. Gephi is open-source and free.

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

相关问题 更多 >