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

Анимированные графики в ноутбуке 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()
4b9b3361

Ответ 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.

Ответ 6

В комментарии @goger "ужасного мерцания" я обнаружил, что вызов clear_output (wait = True) решил мою проблему. Флаг сообщает clear_output ожидать рендеринга, пока у него не появится что-то новое для рендеринга.

Ответ 7

bqplot - действительно хороший вариант сделать это сейчас. его встроенный специально для анимации через python в ноутбуке

https://github.com/bloomberg/bqplot