#14. Создаем анимацию графиков Классы FuncAnimation и ArtistAnimation | Matplotlib уроки

Поділитися
Вставка
  • Опубліковано 27 кві 2021
  • Узнаете как создавать анимацию, используя интерактивный режим с использованием функций ion() и ioff(), а также с использованием специальных классов FuncAnimation и ArtistAnimation. Дополнительно рассматриваются функции clf(), draw() и метод обработки событий gcf().canvas.flush_events().
    Инфо-сайт: proproprogs.ru/modules/
    Создание анимации: matplotlib.org/stable/api/ani...
    Matplotlib: matplotlib.org/stable/content...

КОМЕНТАРІ • 43

  • @user-kw4kp7eq9m
    @user-kw4kp7eq9m Рік тому +2

    Большое спасибо за курс!

  • @ilyakosarev
    @ilyakosarev 9 місяців тому +1

    Спасибо, очень информативно.

  • @nadyamoscow2461
    @nadyamoscow2461 2 роки тому +4

    Большое спасибо за очередной познавательный и полезный курс.

  • @BigVeterIvanV
    @BigVeterIvanV Рік тому +2

    Круть подборка, спасибо.

  • @waydao4958
    @waydao4958 3 роки тому +14

    Пойду попробую сделать море в 3D)))

    • @anonim5052
      @anonim5052 3 місяці тому

      МОРЕ
      import numpy as np
      import matplotlib.pyplot as plt
      from matplotlib.animation import ArtistAnimation
      from mpl_toolkits.mplot3d import Axes3D
      # Prepare meshgrid
      x = np.linspace(-2 * np.pi, 2 * np.pi, 100)
      y = np.linspace(-2 * np.pi, 2 * np.pi, 100)
      xgrid, ygrid = np.meshgrid(x, y)
      # Set up the figure
      fig = plt.figure(figsize=(10, 6))
      ax_3d = fig.add_subplot(111, projection='3d')
      ax_3d.set_zlim(-2, 2) # Limit the z-axis to keep the scale consistent
      # Initialize random wave centers
      num_waves = 5
      wave_centers = np.random.rand(num_waves, 2) * 4 * np.pi - 2 * np.pi # Random centers
      # Create animation frames
      frames = []
      for frame in range(50): # Number of frames in the animation
      zgrid = np.zeros_like(xgrid)
      for center in wave_centers:
      # Each wave's contribution is weaker the further it is from the center
      distance = np.sqrt((xgrid - center[0])**2 + (ygrid - center[1])**2)
      zgrid += np.sin(distance - 0.1 * frame) / (1 + distance / np.pi)
      # Create the surface plot for this frame
      line = ax_3d.plot_surface(xgrid, ygrid, zgrid, cmap='ocean')
      ax_3d.set_zlim(-2, 2) # Ensure the z-axis limit remains consistent
      frames.append([line])
      # Generate the animation
      animation = ArtistAnimation(fig, frames, interval=100, blit=False, repeat=True)
      plt.show()

  • @povorot_netuda
    @povorot_netuda 6 місяців тому +1

    ее я досмотрела этот курс теперь следующий надо смотреть

  • @egorl5878
    @egorl5878 6 місяців тому +1

    спасибо за информацию

  • @friend1cat
    @friend1cat 3 роки тому +5

    Спасибо, Сергей!

  • @f-16fightingfalcon99
    @f-16fightingfalcon99 2 роки тому +3

    Здравствуйте, а как можно интегрировать Matloplib в GUI? Например в Pyqt6 чтобы в самой программе рисовать график?

  • @vvvolkov
    @vvvolkov 10 місяців тому +3

    А как сделать анимацию, если порождающая функция неизвестна, а есть просто набор точек y_i(x_i) в разные моменты времени?

  • @BLMCOIN
    @BLMCOIN 11 місяців тому +3

    Второй курс пройден, я все ближе к ML

  • @DS-gb9bl
    @DS-gb9bl 3 роки тому +1

    А как создать анимацию полярной функции по типу эпитрохоиды?

  • @oplesser
    @oplesser 3 роки тому +4

    а можно сделать интерактив под юпитером? Я что то попытался в лоб, но у меня не удалось ...

  • @cantwaitforit
    @cantwaitforit 2 роки тому +2

    Что-то с matplotlib случилось. Анимации из видео не запускаются. Примеры из инета - также. Довольно странно, т.к, если сохранять в gif формате, то график отображается

    • @cantwaitforit
      @cantwaitforit 2 роки тому +1

      Решил проблему добавлением строчки в самом начале "%matplotlib qt5" (В jupyter)

  • @mirlan19
    @mirlan19 2 роки тому +1

    спасибо

  • @user-lh6xe3zi1t
    @user-lh6xe3zi1t Рік тому +1

    В GoogleColab анимацию наверное нельзя увидеть? Код ваш туда загружаю, при запуске программы видно, что цикл работает, так как слева стрелка бегает по коду, а потом просто в конце одна картинка появляется и всё.

    • @selfedu_rus
      @selfedu_rus  Рік тому

      да, там вроде ограниченный функционал

    • @user-lh6xe3zi1t
      @user-lh6xe3zi1t Рік тому

      @@selfedu_rus 👌

  • @impellergimpeller5133
    @impellergimpeller5133 3 роки тому +2

    Спасибо! А можно как-то сохранять в GIF или подобный формат?

    • @selfedu_rus
      @selfedu_rus  3 роки тому +7

      animation = animation.FuncAnimation( ... )
      animation.save('моя анимация.gif',
      writer='imagemagick',
      fps=30)

    • @impellergimpeller5133
      @impellergimpeller5133 3 роки тому +1

      @@selfedu_rus Спасибо!

  • @user-ul3xx6tq1s
    @user-ul3xx6tq1s 3 роки тому

    Здравствуйте! А является ли возможным сделать анимацию движения примитива по графику? Скажем, чтобы по контуру графика параболы двигался красный кружок. Если возможно, можете, пожалуйста, сказать в каком направлении думать?)

    • @selfedu_rus
      @selfedu_rus  3 роки тому

      делал прям такой пример, вот здесь: github.com/selfedu-rus/python-algorithms файл grad1_1.py

    • @user-ul3xx6tq1s
      @user-ul3xx6tq1s 3 роки тому +1

      @@selfedu_rus большое спасибо!

    • @user-ul3xx6tq1s
      @user-ul3xx6tq1s 3 роки тому

      @@selfedu_rus не сочтите за наглость, а есть ли у вас ещё примеры движения примитива по графику. Ваш предыдущий пример помог, но лучше понять устройство смогу увидев ещё пример. В частности, в файле grad1_1.py в функции df(x) не совсем понял откуда берётся выражение "2*x -5". Мне необходимо сделать анимацию движения по спирали, и я уверен, ваш пример поможет в этом разобраться.

    • @selfedu_rus
      @selfedu_rus  3 роки тому

      @@user-ul3xx6tq1s 2x - 5 - это производная функции x^2 - 5x + 5. Пример похожий есть grad2.py для двумерного случая. Больше вроде никаких.

  • @user-lf9tm6xx6p
    @user-lf9tm6xx6p 2 роки тому +2

    Как по мне, от FuncAnimation только сложнее стало)

  • @user-lh6xe3zi1t
    @user-lh6xe3zi1t Рік тому

    Добрый День! Скажите, пож-та, на этом обучающее видео по Matplotlib завершён?

  • @vonmansfeld2244
    @vonmansfeld2244 3 роки тому +4

    Я очень надеюсь, что ты не удалишь свои ролики

  • @tankss8911
    @tankss8911 2 роки тому +1

    А что делать если не воспроизводится анимация?

    • @user-lh6xe3zi1t
      @user-lh6xe3zi1t Рік тому

      вот выше кто-то тоже задавался этим вопросом и ее решил:
      Что-то с matplotlib случилось. Анимации из видео не запускаются. Примеры из инета - также. Довольно странно, т.к, если сохранять в gif формате, то график отображается.
      @cantwaitforit
      @cantwaitforit
      11 месяцев назад (изменено)
      Решил проблему добавлением строчки в самом начале "%matplotlib qt5" (В jupyter)

  • @user-zq1yk1eu8j
    @user-zq1yk1eu8j 2 роки тому

    все сделал по видео, все модули загрузил, и выскакиевает все равно кончена ошибка, сука, весь день сижу график не могу сделать.

    • @user-zq1yk1eu8j
      @user-zq1yk1eu8j 2 роки тому

      File "grg.py", line 21, in
      animation = FuncAnimation(
      TypeError: __init__() missing 1 required positional argument: 'func'

    • @user-zq1yk1eu8j
      @user-zq1yk1eu8j 2 роки тому

      в другом варианте, втором, где график должен идти, все без ошибок, но он тупо стоит, все по видео, не единой ошибки

    • @user-zs2pg6lw8d
      @user-zs2pg6lw8d 2 роки тому +1

      Пишет, что пропущен обязательный аргумент, т.е. там где в коде: animation = FuncAnimation(fig, func = update_cos ..... т.е пропущена строчка func = update_cos

    • @user-zq1yk1eu8j
      @user-zq1yk1eu8j 2 роки тому

      @@user-zs2pg6lw8d спасибо

    • @user-zs2pg6lw8d
      @user-zs2pg6lw8d 2 роки тому +2

      Вот рабочий код:
      import matplotlib.pyplot as plt
      import matplotlib.animation as an
      import numpy as np
      def update_cos (frame, line, x):
      pass
      line.set_ydata(np.cos(x+frame))
      return[line]
      fig, ax = plt.subplots()
      x = np.arange(-2*np.pi, 2*np.pi, 0.1)
      y = np.cos(x)
      line, = ax.plot(x, y)
      phasa = np.arange(0, 4*np.pi, 0.1)
      animation = an.FuncAnimation(
      fig,
      func=update_cos,
      frames=phasa,
      fargs=(line, x),
      interval= 30,
      blit= True,
      repeat=False)
      plt.show()

  • @bl_bl_e
    @bl_bl_e 2 роки тому

    видео слишком перегружено. мне нужно только фанканимейшн, но вместо этого я вижу кучу непонятних коментариев, и не могу разобраться

    • @user-lh6xe3zi1t
      @user-lh6xe3zi1t Рік тому

      ☺Значит надо искать другие источники. Кстати, быстро информацию можно также найти на сайта автора данного курса. Ссылка под видео. Читать намного конечно быстрее, чем смотреть всё видео