Анимированные графики в ноутбуке ipython
Есть ли способ создания анимированных графиков. Например, показывая один и тот же график с разными параметрами.
Например, ноутбук SAGE, можно написать:
a = animate([circle((i,i), 1-1/(i+1), hue=i/10) for i in srange(0,2,0.2)],
xmin=0,ymin=0,xmax=2,ymax=2,figsize=[2,2])
a.show()
Ответы
Ответ 1
Обновление: январь 2014 года
Jake Vanderplas создал Javascript-пакет для анимаций matplotlib, доступных здесь. Использование его так же просто, как:
# https://github.com/jakevdp/JSAnimation
from JSAnimation import examples
examples.basic_animation()
![Example of Jake's JSAnimation package]()
Смотрите его сообщение в блоге для более полного описания и примеров.
Исторический ответ (см. goger для коррекции)
Да, обновление Javascript еще не корректно удерживает рамку изображения, поэтому есть мерцание, но вы можете сделать что-то очень простое с помощью этой техники:
import time, sys
from IPython.display import clear_output
f, ax = plt.subplots()
for i in range(10):
y = i/10*sin(x)
ax.plot(x,y)
time.sleep(0.5)
clear_output()
display(f)
ax.cla() # turn this off if you'd like to "build up" plots
plt.close()
Ответ 2
Это ужасное мерцание, но по крайней мере это создает сюжет, который оживляет меня. Он основан на Ароне, но Арон не работает как есть.
import time, sys
from IPython.core.display import clear_output
f, ax = plt.subplots()
n = 30
x = array([i/10.0 for i in range(n)])
y = array([sin(i) for i in x])
for i in range(5,n):
ax.plot(x[:i],y[:i])
time.sleep(0.1)
clear_output()
display(f)
ax.cla() # turn this off if you'd like to "build up" plots
plt.close()
Ответ 3
Если вы используете ноутбук IPython, v2.0 и выше поддерживают интерактивные виджеты. Вы можете найти хороший пример ноутбука здесь (n.b. вам нужно скачать и запустить со своей машины, чтобы увидеть ползунки).
Это существенно сводится к импортированию interact
, а затем передаёт ему функцию вместе с диапазонами для параметров. например, со второго канала:
In [8]:
def pltsin(f, a):
plot(x,a*sin(2*pi*x*f))
ylim(-10,10)
In [9]:
interact(pltsin, f=(1,10,0.1), a=(1,10,1));
Это приведет к созданию графика с двумя ползунками для f
и a
.
Ответ 4
Виджеты IPython позволяют вам манипулировать объектами Python в ядре с объектами GUI в Notebook. Вам также может понравиться Sage размещенные IPython Notebooks. Одна из проблем, которые могут возникнуть при обмене виджетами или интерактивностью в ноутбуках, заключается в том, что если у кого-то еще нет IPython, они не могут выполнять вашу работу. Чтобы решить эту проблему, вы можете использовать Domino для обмениваться записными книжками с виджетами, которые другие могут запускать.
Ниже приведены три примера виджетов, которые вы можете создать в ноутбуке с помощью pandas для фильтрации данных, фракталов и ползунка для 3D-графика. Подробнее читайте в коде и ноутбуках здесь.
![enter image description here]()
![enter image description here]()
![enter image description here]()
Если вы хотите передавать данные в реальном времени или настроить симуляцию для запуска в виде цикла, вы также можете данные потока на участки в блокнот. Отказ от ответственности: я работаю на Plotly.
Ответ 5
Если вы хотите анимацию 3D-анимации, виджет Ipyvolume Jupyter очень впечатляет.
http://ipyvolume.readthedocs.io/en/latest/animation.html#
Ответ 6
В комментарии @goger "ужасного мерцания" я обнаружил, что вызов clear_output (wait = True) решил мою проблему. Флаг сообщает clear_output ожидать рендеринга, пока у него не появится что-то новое для рендеринга.
Ответ 7
bqplot - действительно хороший вариант сделать это сейчас. его встроенный специально для анимации через python в ноутбуке
https://github.com/bloomberg/bqplot