Есть много вопросов о matplotlib, pylab, pyplot, ipython, так что извините, если вам надоело видеть, как это спрашивается. Я постараюсь быть настолько конкретным, насколько могу, потому что я просматривал вопросы людей и смотрел документацию на pyplot и pylab, и я до сих пор не уверен, что я делаю неправильно. Включить с кодом:
Цель: нарисуйте фигуру каждые 0,5 секунды и обновите фигуру, как только вызывается команда plot.
Моя попытка кодирования этого следует (выполняется на ipython -pylab):
import time
ion()
x=linspace(-1,1,51)
plot(sin(x))
for i in range(10):
plot([sin(i+j) for j in x])
#see **
print i
time.sleep(1)
print 'Done'
Он правильно отображает каждую строку, но не до выхода из цикла for. Я попытался сделать перерисовку, поставив draw()
где **
, но это тоже не работает. В идеале, я бы хотел, чтобы он просто добавлял каждую строку, а не выполнял полную перерисовку. Если требуется повторная перерисовка, это прекрасно.
Дополнительные попытки решения:
сразу после ion()
, попробовал добавить hold(True)
безрезультатно.
для ударов пробовал show()
для **
Самый близкий ответ, который я нашел, что я пытаюсь сделать, - это построение строк без блокировки выполнения, но show()
ничего не делает.
Извиняюсь, если это простой запрос, и я смотрю мимо чего-то столь очевидного. Для чего это стоит, это произошло, когда я пытался преобразовать код matlab из класса в некоторый python для моего собственного использования. Исходный matlab (удаленные инициализации), который я пытался преобразовать, следует:
for i=1:time
plot(u)
hold on
pause(.01)
for j=2:n-1
v(j)=u(j)-2*u(j-1)
end
v(1)= pi
u=v
end
Любая помощь, даже если она просто "ищет этот метод", будет отличной, поэтому я могу хотя бы сузить свои усилия, чтобы понять, как использовать этот метод. Если у вас будет больше информации, которая была бы полезной, сообщите мне.