import pandas as pd
import plotly.graph_objects as go
Datos simulados (reemplaza con tus datos reales)
data = {
'Año': list(range(1980, 2014)),
'Brasil': [5000 + i50 for i in range(34)],
'Argentina': [4000 + i30 for i in range(34)]
}
df = pd.DataFrame(data)
df['Año'] = df['Año'].astype(int) # aseguramos tipo entero
Lista de frames para la animación
frames = []
for i in range(1, len(df) + 1):
frames.append(
go.Frame(
data=[
go.Scatter(x=df['Año'][:i], y=df['Brasil'][:i],
mode='lines+markers', name='Brasil',
line=dict(color='blue', width=3)),
go.Scatter(x=df['Año'][:i], y=df['Argentina'][:i],
mode='lines+markers', name='Argentina',
line=dict(color='red', width=3))
],
name=str(df['Año'].iloc[i-1])
)
)
Figura inicial (primer año)
fig = go.Figure(
data=[
go.Scatter(x=df['Año'][:1], y=df['Brasil'][:1],
mode='lines+markers', name='Brasil',
line=dict(color='blue', width=3)),
go.Scatter(x=df['Año'][:1], y=df['Argentina'][:1],
mode='lines+markers', name='Argentina',
line=dict(color='red', width=3))
],
layout=go.Layout(
title="Animación de Inmigración a Canadá: Brasil vs Argentina (1980-2013)",
xaxis=dict(title="Año"),
yaxis=dict(title="Número de Inmigrantes"),
updatemenus=[
dict(
type="buttons",
buttons=[
dict(label="Play",
method="animate",
args=[None, {"frame": {"duration": 300, "redraw": True},
"fromcurrent": True}]),
dict(label="Pause",
method="animate",
args=[[None], {"frame": {"duration": 0, "redraw": False},
"mode": "immediate"}])
]
)
]
),
frames=frames
)
fig.show()