1
resposta

Desafio: criando uma animação para comparar diferentes dados

#Importação dos módulos usados no desafio
import pandas as pd
import plotly.express as px
import plotly.graph_objs as go

#Importando e preparando os dados
df = pd.read_csv('imigrantes_canada.csv')
df.set_index('País', inplace=True)
anos = list(map(str, range(1980, 2014)))
brasil = df.loc['Brasil', anos]
argentina = df.loc['Argentina', anos]
brasil_dict = {'ano': brasil.index.tolist(), 'Brasil': brasil.values.tolist(), 'Argentina':argentina.values.tolist()}
brar_data = pd.DataFrame(brasil_dict)
brar_data['ano'] = brar_data['ano'].astype(int) # Convertendo o index para inteiro

#Criando uma nova figura
fig=go.Figure()

#Adicionando as linhas
fig.add_traces(
    [go.Scatter(x=[brar_data['ano'].iloc[0]], y=[brar_data['Argentina'].iloc[0]], mode='lines', name='Argentina', line=dict(width=4)),
    go.Scatter(x=[brar_data['ano'].iloc[0]], y=[brar_data['Brasil'].iloc[0]], mode='lines', name='Brasil', line=dict(width=4))]
)

#Personalizando o layout
fig.update_layout(
    title=dict(
        text='<b>Imigração da Argentina e Brasil para o Canadá no período de 1980 a 2013</b>',
        x=0.12,
        xanchor='left',
        font=dict(size=20)
    ),
    xaxis=dict(range=[1980, 2013], autorange=False, title='<b>Ano</b>'),
    yaxis=dict(range=[0, 3000], autorange=False, title='<b>Número de imigrantes</b>'),
     updatemenus=[dict(
        type='buttons',
        showactive=False,
        buttons=[dict(
            label='Play',
            method='animate',
            args=[None, {'frame': {'duration': 100, 'redraw': True}, 'fromcurrent': True}]
        )]
    )],
    width=1000,
    height=500
)

#Configuração dos frames
frames = [
    go.Frame(
        data=[
            go.Scatter(x=brar_data['ano'].iloc[:i+1], y=brar_data['Argentina'].iloc[:i+1]),
            go.Scatter(x=brar_data['ano'].iloc[:i+1], y=brar_data['Brasil'].iloc[:i+1])
        ]
    ) for i in range(len(brar_data))]
fig.frames = frames

#Mostra o grafico
fig.show()

Resultado Final: Resultado final - Imagem estática

A animação pode ser vista funcionando em https://pagge.me/desafio0502

1 resposta

Olá, Adailton! Como vai?

Muito bem! Continue resolvendo os desafios e compartilhando com a comunidade Alura.

Observei que você explorou o uso do Plotly para criar gráficos interativos e dinâmicos, utilizou muito bem o go.Scatter para traçar as linhas de imigração e ainda compreendeu a importância de animar os gráficos com frames para apresentar dados ao longo do tempo de forma envolvente.

Permaneça postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!