colors = ['rgba(59, 130, 246, 0.5)', 'rgba(16, 185, 129, 0.5)', 'rgba(245, 158, 11, 0.5)', 'rgba(239, 68, 68, 0.5)']
line_colors = ['#3b82f6', '#10b981', '#f59e0b', '#ef4444']
names = ['1 Language', '2 Languages', '3 Languages', '4+ Languages']
keys = ['monolingual', 'bilingual', 'trilingual', 'quadlingual_plus']
fig = go.Figure()
for i, (key, name, color, line_color) in enumerate(zip(keys, names, colors, line_colors)):
fig.add_trace(go.Scatter(
x=multilingual['year'].to_list(),
y=multilingual[key].to_list(),
name=name,
mode='lines',
stackgroup='one',
fillcolor=color,
line=dict(color=line_color, width=0),
hovertemplate=f"<b>{name}</b><br>%{{y:.1f}}%<extra></extra>"
))
fig.update_layout(
height=450,
margin=dict(t=20, r=20, b=100, l=60),
plot_bgcolor="white",
paper_bgcolor="white",
xaxis=dict(title="Year", dtick=1, gridcolor="#eee", zerolinecolor="#eee"),
yaxis=dict(title="% of websites", ticksuffix="%", range=[0, 100], gridcolor="#eee", zerolinecolor="#eee", tickvals=[20, 40, 60, 80, 100], ticktext=["20%", "40%", "60%", "80%", "100%"]),
legend=dict(orientation="h", y=-0.28, x=0.5, xanchor="center"),
hovermode="x unified"
)
fig.show(config={'displayModeBar': False})