Tony
Tony

Reputation: 173

igraph for python

I'm thoroughly confused about how to read/write into igraph's Python module. What I'm trying right now is:

g = igraph.read("football.gml")
g.write_svg("football.svg", g.layout_circle() )

I have a football.gml file, and this code runs and writes a file called football.svg. But when I try to open it using InkScape, I get an error message saying the file cannot be loaded. Is this the correct way to write the code? What could be going wrong?

Upvotes: 1

Views: 1899

Answers (2)

vroomfondel
vroomfondel

Reputation: 3106

Couple years late, but maybe this will be helpful to somebody.

The write_svg function seems not to escape ampersands correctly. Texas A&M has an ampersand in its label -- InkScape is probably confused because it sees & rather than &. Just open football.svg in a text editor to fix that, and you should be golden!

Upvotes: 0

Tamás
Tamás

Reputation: 48041

The write_svg function is sort of deprecated; it was meant only as a quick hack to allow SVG exports from igraph even if you don't have the Cairo module for Python. It has not been maintained for a while so it could be the case that you hit a bug.

If you have the Cairo module for Python (on most Linux systems, you can simply install it from an appropriate package), you can simply do this:

igraph.plot(g, "football.svg", layout="circle")

This would use Cairo's SVG renderer, which is likely to generate the correct result. If you cannot install the Cairo module for Python for some reason, please file a bug report on https://bugs.launchpad.net/igraph so we can look into this.

(Even better, please file a bug report even if you managed to make it work using igraph.plot).

Upvotes: 2

Related Questions