Подтвердить что ты не робот

Почему кнопка сохранения не работает на графике matplotlib?

У меня matplotlib 1.0.0, установленный в виртуальной среде Python 2.7 на Mac OS X 10.6. Я могу создавать сюжеты в порядке. Однако всякий раз, когда я нажимаю кнопку "Сохранить", я не могу набирать текст в диалоговом окне сохранения и не могу сохранить график. Единственное, что я могу сделать, - это отменить отмену. Любые мысли о том, что вызывает это и как его исправить?

alt text

Процедура установки Matplotlib

Я установил matplotlib, клонировав astraw matplotlib github repository, а затем свободно следуя Инструкции по установке HyperJeff для numpy/scipy/matplotlib. Ниже приведены потенциально релевантные разделы setup.cfg и make.osx, включая разделы, которые я изменил до компиляции и установки.

setup.cfg

[egg_info]
tag_svn_revision = 1

[directories]
basedirlist = /Users/matthew/.virtualenvs/matplotlib-test

[status]
#suppress = True
#verbose = True

[provide_packages]

[gui_support]
#gtk = False
#gtkagg = False
#tkagg = False
wxagg = False
#macosx = False

[rc_options]
backend = MacOSX
#numerix = numpy

make.osx

# build mpl into a local install dir with
PREFIX=/Users/matthew/.virtualenvs/matplotlib-test
MPLVERSION=1.0rc1
PYVERSION=2.7
PYTHON=python${PYVERSION}
ZLIBVERSION=1.2.3
PNGVERSION=1.2.39
FREETYPEVERSION=2.3.11
MACOSX_DEPLOYMENT_TARGET=10.6
OSX_SDK_VER=10.6
ARCH_FLAGS="-arch i386-arch x86_64"

## You shouldn't need to configure past this point (but I did...)

PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig"
CFLAGS="${ARCH_FLAGS} -I${PREFIX}/include -I${PREFIX}/include/freetype2 -isysroot /Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk"
LDFLAGS="${ARCH_FLAGS} -L${PREFIX}/lib -syslibroot,/Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk"

PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig"
CFLAGS="-arch i386 -arch x86_64 -I${PREFIX}/include -I${PREFIX}/include/freetype2 -isysroot /Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk"
LDFLAGS="-arch i386 -arch x86_64 -L${PREFIX}/lib -syslibroot,/Developer/SDKs/MacOSX${OSX_SDK_VER}.sdk"
FFLAGS="-arch i386 -arch x86_64"

После изменения setup.cfg и make.osx я выпустил следующие команды для установки matplotlib:

make -f make.osx fetch deps mpl_build mpl_install
python setup.py install

Примечание: sudo не требуется, поскольку я устанавливаю в virtualenv, а не в пакеты сайта, такие как HyperJeff.

Установка Python

Я установил Python 2.7 с помощью python.org Python 2.7 PPC/i386/x86-64 Mac OS X Installer Disk Image для Mac OS X 10.5. Благодаря Ned Deily ответит на этот вопрос SO, я знаю, что эта версия Python 2.7 не может запускать IDLE или Tkinter в Mac OS X 10.6.

Вопросы

  • Может ли версия Python 2.7, которую я установил, стать причиной проблемы? Должен ли я переустановить Python 2.7 с помощью 32-разрядного образа установки для Mac OS X Python 2.7 для Mac OS X 10.3 через 10.6?
  • Есть ли другой параметр gui_support, который мне нужно настроить в setup.cfg, а затем перекомпилировать matplotlib?

Обновление, 13 сентября 2010 года, 3:33 вечера

Похоже, что другие пользователи Mac OS X и matplotlib имеют одинаковую проблему. В списке рассылки matplotlib-пользователей два пользователя сообщили о том же неполадке в Mac OS X 10.5. Хотя они выполняли matplotlib 0.99.1.1 и 0.99.1.2 по сравнению с matplotlib 1.0.0, которые я установил.

Обновлено, 14 сентября 2010 г., 8:18

matplotlib bug 2973874 был открыт 20 марта 10 с той же проблемой. Тем не менее, это приоритет 5 и не был изменен с тех пор, как ошибка была первоначально открыта. Ниже приведено описание ошибки:

Я запускаю 64-разрядный Macintosh с 64-разрядным Mac. Если запустите график и нажмите "Сохранить", я открою открытое диалоговое окно сохранения, я не могу ввести текст в поле имени файла. Я могу выбрать существующий файл, но не могу изменить имя. Если я выберу файл non png, он не перезапишет его. Я получаю файл с тем же именем, но с расширением png.

4b9b3361

Ответ 2

Мой ответ не устраняет проблему, но может легко ее решить! Вы можете прикоснуться к новому файлу с правильным расширением файла в терминале. После того, как вы можете выбрать этот файл с помощью мыши в окне matplotlib и перезаписать его.

Ответ 3

Для тех, у кого метод Thouis не работает:

Я заметил, что простая работа заключается в том, чтобы изменить базу данных matplotlib. Вот список доступных бэкэндов:

http://matplotlib.org/faq/usage_faq.html#what-is-a-backend

Обратите внимание, что вы должны выбрать один из средств рендеринга (т.е. те, которые поддерживают команду show()). Возможно, вам потребуется установить бэкэнд, но у вас может быть несколько установленных.

Для этого:

import matplotlib
matplotlib.use('Qt4Agg')    #replace 'Qt4Agg' with desired backend

Предупреждение: это должно быть сделано ПЕРЕД импортом pylab и т.д.

Ответ 4

Чтобы решить эту проблему:

Используйте conda install python.app для установки pythonw.

Затем используйте pythonw вместо python в вашем терминале.

например.

pythonw my_plot.py

Надеюсь, что это поможет