filtrando Argentina
argentina = df.loc[['Argentina']]
dados_argentina = (
argentina
.drop(columns=['Continente', 'Região'])
.T
.reset_index()
)
dados_argentina.columns = ['ano', 'imigrantes']
dados_argentina = dados_argentina[dados_argentina['ano'] != 'Total']
dados_argentina['ano'] = dados_argentina['ano'].astype(int)
Garantindo tipos corretos
dados_brasil["ano"] = dados_brasil["ano"].astype(int)
dados_argentina["ano"] = dados_argentina["ano"].astype(int)
dados_brasil["imigrantes"] = pd.to_numeric(dados_brasil["imigrantes"], errors="coerce")
dados_argentina["imigrantes"] = pd.to_numeric(dados_argentina["imigrantes"], errors="coerce")
#ordenar por ano
dados_brasil = dados_brasil.sort_values("ano").reset_index(drop=True)
dados_argentina = dados_argentina.sort_values("ano").reset_index(drop=True)
Plotando gráfico:
fig = go.Figure()
fig.add_trace(go.Scatter(
x=dados_brasil["ano"].iloc[:1],
y=dados_brasil["imigrantes"].iloc[:1],
mode="lines+markers",
name="Brasil",
line=dict(width=4)
))
fig.add_trace(go.Scatter(
x=dados_argentina["ano"].iloc[:1],
y=dados_argentina["imigrantes"].iloc[:1],
mode="lines+markers",
name="Argentina",
line=dict(width=4)
))
# 5) Frames: 2 scatters (Brasil e Argentina) em cada frame
frames = []
for i in range(len(anos)):
frames.append(go.Frame(
data=[
go.Scatter(x=dados_brasil["ano"].iloc[:i+1], y=dados_brasil["imigrantes"].iloc[:i+1]),
go.Scatter(x=dados_argentina["ano"].iloc[:i+1], y=dados_argentina["imigrantes"].iloc[:i+1]),
],
name=str(anos[i])
))
fig.frames = frames
# 6) Layout + botões
ymax = max(dados_brasil["imigrantes"].max(), dados_argentina["imigrantes"].max())
fig.update_layout(
title="Imigração para o Canadá: Brasil x Argentina (1980–2013)",
xaxis=dict(title="Ano", range=[min(anos), max(anos)]),
yaxis=dict(title="Número de imigrantes", range=[0, ymax + 200]),
updatemenus=[dict(
type="buttons",
showactive=False,
buttons=[
dict(
label="Play",
method="animate",
args=[None, {"frame": {"duration": 120, "redraw": True},
"transition": {"duration": 0},
"fromcurrent": True}]
),
dict(
label="Pause",
method="animate",
args=[[None], {"frame": {"duration": 0, "redraw": False},
"mode": "immediate",
"transition": {"duration": 0}}]
),
]
)],
width=1000,
height=500
)
fig.show()