2012-04-28 7 views
1

Я полностью смущен тем, как читать/записывать в модуль Python igraph. То, что я пытаюсь прямо сейчас:igraph для python

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

У меня есть файл football.gml, и этот код работает и записывает файл с именем football.svg. Но когда я пытаюсь открыть его с помощью InkScape, я получаю сообщение об ошибке, указывающее, что файл не может быть загружен. Это правильный способ написать код? Что может пойти не так?

+0

Правильно ли он читает gml-файл? Что такое 'g' после того, как вы прочитали football.gml? – Chris

ответ

2

Функция write_svg является устаревшей; это означало только как быстрый взлом, позволяющий экспортировать SVG из igraph, даже если у вас нет модуля Cairo для Python. Он не поддерживался какое-то время, так что это может быть случай, когда вы попали в ошибку.

Если у вас есть модуль Cairo для Python (в большинстве систем Linux, вы можете просто установить его из соответствующего пакета), вы можете просто сделать это:

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

Это будет использовать SVG визуализатор Каира, который скорее всего, приведет к правильному результату. Если вы не можете установить модуль Cairo для Python по какой-либо причине, напишите отчет об ошибке на https://bugs.launchpad.net/igraph, чтобы мы могли изучить это.

(Еще лучше, пожалуйста, сообщите об ошибке, даже если вам удалось заставить его работать, используя igraph.plot).

0

Несколько лет спустя, но, возможно, это будет полезно для кого-то.

Функция write_svg, похоже, не ускользнула от амперсандов правильно. Texas A & M имеет амперсанд в своем ярлыке - InkScape, вероятно, запутан, потому что он видит &, а не &. Просто откройте football.svg в текстовом редакторе, чтобы исправить это, и вы должны быть золотыми!