import pandas as pd
import plotly.graph_objects as go
1. Preparação dos dados
df = pd.read_csv('imigrantes_canada (2).csv')
df.set_index('País', inplace=True)
anos = list(map(str, range(1980, 2014)))
Extraindo dados e convertendo anos para inteiro conforme a dica
dados_brasil = df.loc['Brasil', anos]
dados_argentina = df.loc['Argentina', anos]
df_comparativo = pd.DataFrame({
'ano': list(map(int, anos)),
'Brasil': dados_brasil.values,
'Argentina': dados_argentina.values
})
2. Criando a figura inicial (ponto de partida: ano 1980)
fig = go.Figure(
data=[
go.Scatter(x=[df_comparativo['ano'][0]], y=[df_comparativo['Brasil'][0]],
name='Brasil', mode='lines', line=dict(width=2, color='green')),
go.Scatter(x=[df_comparativo['ano'][0]], y=[df_comparativo['Argentina'][0]],
name='Argentina', mode='lines', line=dict(width=2, color='blue'))
],
layout=go.Layout(
title='Imigração para o Canadá: Brasil vs Argentina',
xaxis=dict(range=[1980, 2013], title='Ano'),
yaxis=dict(range=[0, df_comparativo[['Brasil', 'Argentina']].max().max() + 500], title='Imigrantes'),
updatemenus=[dict(
type='buttons',
buttons=[dict(label='Play', method='animate', args=[None, {"frame": {"duration": 100, "redraw": False}}])]
)]
)
)
3. Criando os Frames (Onde a mágica acontece)
frames = []
for i in range(len(df_comparativo)):
# Cada frame contém uma lista com DOIS objetos Scatter
frames.append(go.Frame(
data=[
go.Scatter(x=df_comparativo['ano'][:i+1], y=df_comparativo['Brasil'][:i+1]),
go.Scatter(x=df_comparativo['ano'][:i+1], y=df_comparativo['Argentina'][:i+1])
]
))
fig.frames = frames
Exibindo o gráfico
fig.show()