Почему график NetworkX не рисуется в Cygwin?

Я использую Python и NetworkX (графическую библиотеку) на Cygwin (Windows 7).

Следующий код создает график и пытается его нарисовать, но на экране ничего не появляется:

plt.ion()
nx.draw(nx.petersen_graph())
plt.show()

Ошибок вроде нет.

Я также попытался сохранить график на изображение, используя:

plt.savefig("test.png")

который создает правильный образ.

Это связано с matplotlib и Cygwin?


person sdasdadas    schedule 06.06.2013    source источник
comment
у вас установлен интерактивный бэкенд?   -  person tacaswell    schedule 06.06.2013
comment
@tcaswell Это означает matplotlib или pyplot? Если да, то да оба устанавливаются и работают в других приложениях.   -  person sdasdadas    schedule 06.06.2013
comment
Глупый вопрос, но как вы запускаете этот код? Это из командной строки или интерактивной оболочки Python, такой как IPhyton, или через какую-то IDE, например PyScripter? Если это так, вам нужно включить интерактивный режим, см.: code.google.com/p /pyscripter/wiki/?   -  person EdChum    schedule 06.06.2013
comment
Вы используете TkAgg, gtkagg на qtagg?   -  person tacaswell    schedule 06.06.2013
comment
@tcaswell Мой бэкенд был настроен на «agg».   -  person sdasdadas    schedule 07.06.2013
comment
@EdChum У меня сложилось впечатление, что plt.ion() включает интерактивный режим?   -  person sdasdadas    schedule 07.06.2013
comment
бэкэнд agg не включает в себя интерактивную часть (он ничего не знает о том, как рисовать в графический интерфейс), вам нужно использовать один из интерактивных бэкендов.   -  person tacaswell    schedule 07.06.2013
comment
У меня все работает, спасибо вам обоим. Смотрите мой ответ ниже.   -  person sdasdadas    schedule 07.06.2013


Ответы (1)


Я исправил эту проблему:

  1. Запускаем X с помощью startxwin и запускаем скрипт оттуда.
  2. Изменение параметра backend = agg на backend = tkagg в моем файле matplotlibrc.

Спасибо tcaswell и EdChum за помощь.

person sdasdadas    schedule 06.06.2013