Will Will - 3 months ago 51
Python Question

laying out a large graph with graphviz

My daughters have made a game not unlike tic-tac-toe. Of course as I played it with them I started brute-forcing it in my head...

So at lunchtime I made a quick little Python script to 'solve' the game. And I wanted to see the results graphically, so I generated a dot file of all legal moves:

I've pasted the data here.

When I try and render it using

dot
, it takes forever and I abort it after a few hours.

If I render it using
neato
or
sfdp
etc, it takes a few seconds or less but the layout is impossible to actually read:

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


sfdp

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


neato

I would be happy for the resulting image to be several megapixels.

How can I lay out and render such a big graph? I am open to non-dot suggestions, like Python libraries that can do the layout too.

(somewhat related link)

Added: my Python script to solve the game and generate the dot file

job job
Answer

Try this:

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

The -Goverlap preserves the layout but uniformly scales things up until there are no more node overlaps. I was able to get a ~77MB PNG that looks like this when you zoom out. enter image description here

Comments