#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:
A animação pode ser vista funcionando em https://pagge.me/desafio0502