Интерактивный matplotlib через Eclipse PyDev

Это продолжение этого интерактивного matplolib через поток затмения, который составляет около 2 лет, мне было интересно, был ли прогресс в то же время.

Я запускаю консоль IPython в консольном окне в Eclipse PyDev, но я не могу получить те же функции интерактивного построения, что и matplotlib, как если бы я запускал IPython в командной строке (Windows) вне Eclipse PyDev. Вот как они сравнивают:

A) Запуск IPython в оболочке вне Eclipse PyDev

  1. Запустите IPython в командной строке Windows с помощью «ipython –pylab»
  2. В консоли IPython введите «plot ([1,2,3])». Это откроет окно графика фигуры, и консоль IPython будет готова к дальнейшим командам (без закрытия окна графика фигуры).
  3. Например, я могу ввести «xlabel (« годы »), и это обновит окно графика фигуры.

B) Запуск IPython в интерактивной консоли в Eclipse PyDev Введите в интерактивную консоль IPython в Eclipse PyDev следующее:

  1. "из импорта pylab *"
  2. «plot ([1,2,3])» -> Диалоговое окно графика не отображается.
  3. Мне нужно ввести «show ()», чтобы открыть окно графика фигуры. Но теперь проблема в том, что пока я держу окно графика фигуры открытым, консоль IPython не принимает никаких новых команд.
  4. Поэтому я закрываю окно графика фигуры, вводим «xlabel (« годы »), а затем снова« show () ». Это заново откроет окно графика фигуры с «годами» в качестве метки моей оси, но сам сюжет пуст и больше не отображает данные [1,2,3].

При таком поведении A) явно превосходит B), но я хотел бы продолжать работать в Eclipse PyDev, потому что мне нравится всегда иметь список переменных на моем экране (без необходимости запускать команду для отображения всех переменных, например, при запуске формы IPython оболочка окон). Использование Wicked Shell, как предлагается в другом потоке, не работает (IPython не работает должным образом в Wicked Shell).

Как настроить IPython в Eclipse PyDev так, чтобы он показывал одно и то же интерактивное поведение, как если бы я запускал его в командной строке Windows?

4 Solutions collect form web for “Интерактивный matplotlib через Eclipse PyDev”

Извиняюсь за потенциально неполный ответ, но, надеюсь, я смогу пролить свет на проблему.

Я считаю, что тот, который описывает ОП, является нормальным поведением. Фактически, начиная с командной строки ipython, импортирование pylab и выдача команды plot дает точно описанное поведение блокировки, поэтому это не связано с pydev или eclipse. Дело в том, что показ в matplotlib блокируется в интерактивном режиме; когда вы используете matplotlib в сеансе ipython, запущенном как «ipython –pylab», вы используете некоторые «хаки», которые разработчики ipython сделали для вас вокруг matplotlib, что позволяет иметь как интерактивный режим, так и неблокирующие вызовы. Однако импортировать pylab недостаточно, чтобы применить эти «хаки». PyDev, похоже, не разрешает флаги вызову интерпретатора, поэтому нельзя напрямую вызвать «ipython -pylab».

К счастью, ipython имеет специальную команду «pylab», которая применяет хаки и импортирует pylab, даже если интерпретатор не был запущен с флагом pylab. Поэтому вы можете просто попробовать ввести «pylab» внутри консоли (на самом деле, вы даже можете настроить консоль pydev, чтобы она выполнялась автоматически), и вы должны получить желаемое поведение. Тем не менее, я должен сообщить, что, хотя это отлично работает для меня из сеанса ipython, запущенного из командной строки, что-то не так, когда я пытаюсь сделать то же самое из Eclipse. Команда не блокирует, я получаю питон, но окно matplotlib не появляется. Для записей я нахожусь на Mac под управлением Snow Leopard. Я не могу сказать, возникает ли такая же проблема и в Windows, что OP, похоже, использует.

Вы можете решить эту проблему, выбрав графический интерфейс для интерактивной консоли в PyDev Preference.

Eclipse -> Окно -> Настройки -> Pydev -> Интерактивная консоль -> Включить интеграцию цикла событий GUI.

В моем случае я выбрал PyQt (qt / qt4)

Я добился аналогичного поведения в Eclipse PyDev, выполнив функцию построения графика в другом потоке:

 import threading from pylab import * import matplotlib.animation as animation import time x = array(range(0,1000))/100 y = sin(x) def updateData(self): ax.set_data(x,y) def MyThread(): global ax fig, axarr = subplots(1) ax, = axarr.plot(x,y) simulation = animation.FuncAnimation(fig, updateData) show() t = threading.Thread(target=MyThread) t.start() # console stay active, user can interactively control figure time.sleep(1) y = sin(2*x) time.sleep(2) ax.get_axes().grid() ax.get_axes().set_xlabel("time") 

Протестировано с помощью инструментальной панели Eclipse 4.3, PyDev 2.7.1, Python 3.2, IPython 0.13

Просто используйте магическую команду %matplotlib для активации интерактивного построения (именно то, что вы описали).

Команда pylab импортирует numpy.* И pylab.* , Серьезно загрязняя ваше глобальное пространство имен.

  • Как начать работу с голыми костями Eclipse + PyDev
  • Есть ли способ сделать документацию для отображения Eclipse + PyDev, например, с помощью справки () Python?
  • Как вы создаете проект PyDev из существующего кода?
  • OSX + Eclipse + PyDev - PATH неверен
  • Pydev console уже есть
  • Запуск внешних программ Python с помощью Eclipse PyDev
  • Eclipse: «Python не настроен»
  • Python. Является ли грамматика для 3.0 такой же, как 3.3?
  •  
    Interesting Posts for Van-Lav

    Python не может импортировать библиотеку, скомпилированную с помощью boost_python

    Получение файлов из аргумента Directory, сортировка по размеру

    Как найти ссылки Markdown с помощью регулярных выражений?

    Как отправить запрос на URL-адрес, который установлен в «login: admin» в Google приложении?

    python pip определяет каталог библиотеки и каталог include

    Добавление 'install_requires' в setup.py при создании пакета python

    Лучшая практика для установки значения по умолчанию для параметра, который должен быть списком в Python?

    Взаимодействие с кнопками / макросами внутри excel автоматически

    Вложенный список «глубокой копии» без использования функции deepcopy

    Python запрашивает urlencode не работает?

    Как использовать структуру форм Django для выбора опций?

    Динамическое добавление к Pandas Dataframe

    Функция генератора для простых чисел

    Как присоединиться к компонентам пути при создании URL-адреса в Python

    Преобразует ли конвертация из байта в байты копию?

    Python - лучший язык программирования в мире.