Criar Animações com Matplotlib

Beginner

This tutorial is from open-source community. Access the source code

Introdução

Neste laboratório, você aprenderá como criar uma animação com Matplotlib. Especificamente, você aprenderá como pausar e retomar uma animação usando os métodos Animation.pause() e Animation.resume().

Dicas da VM

Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.

Importar Bibliotecas

Nesta etapa, importaremos as bibliotecas necessárias para criar uma animação com Matplotlib.

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation as animation

Definir a Animação

Nesta etapa, definiremos a animação que queremos criar. Criaremos uma animação que exibe uma distribuição normal que se move para a direita a cada quadro.

class PauseAnimation:
    def __init__(self):
        ## Criar a figura e o eixo
        fig, ax = plt.subplots()
        ax.set_title('Clique para pausar/retomar a animação')

        ## Criar os valores do eixo x
        x = np.linspace(-0.1, 0.1, 1000)

        ## Começar com uma distribuição normal
        self.n0 = (1.0 / ((4 * np.pi * 2e-4 * 0.1) ** 0.5)
                   * np.exp(-x ** 2 / (4 * 2e-4 * 0.1)))

        ## Criar o gráfico
        self.p, = ax.plot(x, self.n0)

        ## Criar a animação
        self.animation = animation.FuncAnimation(
            fig, self.update, frames=200, interval=50, blit=True)

        ## Definir a animação como não pausada
        self.paused = False

        ## Adicionar um evento de pressionamento de botão para alternar a pausa
        fig.canvas.mpl_connect('button_press_event', self.toggle_pause)

    def toggle_pause(self, *args, **kwargs):
        ## Alternar entre pausado e não pausado
        if self.paused:
            self.animation.resume()
        else:
            self.animation.pause()
        self.paused = not self.paused

    def update(self, i):
        ## Atualizar a distribuição normal
        self.n0 += i / 100 % 5
        self.p.set_ydata(self.n0 % 20)
        return (self.p,)

Criar o Objeto de Animação

Nesta etapa, criaremos um objeto da classe PauseAnimation que definimos na etapa 2.

pa = PauseAnimation()

Mostrar a Animação

Nesta etapa, mostraremos a animação que criamos na etapa 2.

plt.show()

Resumo

Neste laboratório, você aprendeu como criar uma animação com Matplotlib e como pausar e retomar a animação usando os métodos Animation.pause() e Animation.resume(). Você também aprendeu como criar uma animação interativa que responde à entrada do usuário. Com este conhecimento, você pode criar suas próprias animações personalizadas e adicionar interatividade a elas.