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

Функция Matplotlib ion() не может быть интерактивной

У меня проблема с интерактивной функцией Matplotlib. Я запустил следующую программу и получил замороженное пустое окно графика.

import matplotlib.pyplot as plt
import numpy as np

plt.ion()
x = np.arange(0, 4*np.pi, 0.1)
y = [np.sin(i) for i in x]
plt.plot(x, y, 'g-', linewidth=1.5, markersize=4)
plt.show()

Если я удалил оператор "plt.ion()", то он работал нормально. Я использую IDLE, а пакет Matplotlib версии 1.2.x установлен в Python 3.2.2.

Я ожидаю, что это будет интерактивным, но вместо этого я получил недружественное неинтерактивное окно. Может ли кто-то пролить некоторый свет на то, что мне не хватает? Заранее благодарю вас.

4b9b3361

Ответ 1

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

Похоже, что после включения интерактивного режима через plt.ion(), необходимо временно приостановить работу пенопласта, чтобы он обновил/перерисовал себя через plt.pause(0.0001). Вот что я сделал, и это работает!

>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> plt.ion()
>>> x = np.arange(0, 4*np.pi, 0.1)
>>> y = [np.sin(i) for i in x]
>>> plt.plot(x, y, 'g-', linewidth=1.5, markersize=4)
>>> plt.pause(0.0001)         
>>> plt.plot(x, [i**2 for i in y], 'g-', linewidth=1.5, markersize=4)
>>> plt.pause(0.0001)
>>> plt.plot(x, [i**2*i+0.25 for i in y], 'r-', linewidth=1.5, markersize=4) 
>>> plt.pause(0.0001)

Если вы попробовали это в своей консоли IDLE, обратите внимание, что до этого момента все отображалось, за исключением того, что окно графика зависает и не может выйти. Чтобы разморозить его, введите следующее последнее утверждение

>>> plt.show(block=True)

Теперь окно можно закрыть.

Ответ 2

У меня такая же проблема. В ipython есть волшебство %matplotlib, которое решило проблему для меня. По крайней мере, теперь я могу ввести plt.figure() (предполагая, что import matplotlib.pyplot as plt был вызван) и получить полностью интерактивную отзывчивую цифру.

Однако мне все равно было бы интересно узнать, что именно эта магия импортирует, чтобы понять проблему.