2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Отображение анимации графика в Jupyter Notebook
Сообщение02.12.2020, 21:23 


02/12/20
1
Добрейшего вечера
Возникла проблема с программой на 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 


11/12/16
403
сБп
Я не знаю, что именно хотите Вы анимировать. Но Ваш код работает.

Если, например, заменить определение функции на какой-то простой вариант:
Используется синтаксис 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 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group