2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Отображение анимации графика в Jupyter Notebook
Сообщение02.12.2020, 21:23 
Добрейшего вечера
Возникла проблема с программой на Python
При запуске стирает полученный график, после удаления очистки вывода из цикла график начал отображаться, но без анимации.
В то же время при запуске через Voila выдает ошибку
"JavaScript output is disabled in JupyterLab"

Может кто-то подсказать в чем может быть проблема?

Заранее сердечное спасибо

Код:
%matplotlib notebook
import numpy as np
import matplotlib.pyplot as plt
from IPython.display import display, clear_output
from time import sleep
from ipywidgets import widgets

t_disc = widgets.Label('Границы диапазона')
t_range = widgets.IntRangeSlider(value = [0,10],min = 0, max = 50)
# t_h = widgets.HBox([t_disc, t_range])

m_disc = widgets.Label('Число разбиений')
m_val = widgets.IntSlider(value = 501, min = 1, max = 1001)
# m_h = widgets.HBox([m_disc, m_val])

step_disc = widgets.Label('Интервал между кадрами')
step = widgets.FloatSlider(min = 0.0, max = 1.0,value = 0.0, step=0.01)
# step_h = widgets.HBox([step_disc, step])

build = widgets.Button(description = 'Выполнить')

out = widgets.Output()

inter = widgets.VBox([t_disc,t_range, m_disc, m_val, step_disc, step, build])
box = widgets.HBox([inter, out])


N = 100

def on_button_clicked(d):
   
#     global anim
   
    interval = 0.0001
    m = m_val.value
    t0 = t_range.value[0]
    t1 = t_range.value[1]
    tstep = step.value
    y = []
    t = np.linspace(t0, t1, num = m)
   
    def y_count(t, n):
        k = np.arange(n+1)
        yT = (4/np.pi)*np.sum((np.sinc(2*np.pi*(2*k - 1)*t))/(2*k - 1))
        return yT
   
    for i in range(m):
        y.append(y_count(t[i],N))
       
    with out:

        for i in range(m):
            #clear_output(wait=True)
            plt.plot(t[:i+1], y[:i+1], 'k-', lw=2)
            plt.xlim(t[0], t[-1])
            plt.ylim(-0.25,3)
            plt.show()
            sleep(tstep)


build.on_click(on_button_clicked)
display(box)

 
 
 
 Re: Отображение анимации графика в Jupyter Notebook
Сообщение05.12.2020, 12:50 
Я не знаю, что именно хотите Вы анимировать. Но Ваш код работает.

Если, например, заменить определение функции на какой-то простой вариант:
Используется синтаксис Python
def y_count(t, n):
        k = np.arange(n+1)
        yT = np.sin(t)
        return yT

То все рисуется. Например, выбирая число разбиений m_val = 10 и границу диапазона t_range = 10, программа поэтапно строит график на 10 рисунках на промежутке [0, 10]. См. скрин, первые четыре рисунка.

Изображение

А вообще то под анимацией подразумевается другое. Вывод анимированного изображения на одном рисунке. Посмотрите https://python-scripts.com/animations-with-matplotlib

 
 
 [ Сообщений: 2 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group