1
resposta

[Projeto] Foi difícil, mas consegui... Fórum ajudou.

fig = go.Figure()  #------>>> Figura vazia.

fig.add_trace( #---->>> Adicionar traço
    go.Scatter(  #---->>> Objeto recebe parametros go.Scatter
        x=[dados_brasil['Ano'].iloc[0]],  #---->>> eixo x = dataframe[coluna] exibido. iloc[0] para a linha iniciar de 0
        y=[dados_brasil['Imigrantes'].iloc[0]],  #---->>> eixo y = dataframe[coluna] exibido. iloc[0] para a linha iniciar de 0
        mode='lines',  #---->>> modo de exibição 'line'/linhas
        name='Imigrantes - Brasil',  #---->>> nome da linha
        line=dict(width=4)))  #---->>> direção e espesura da linha

# Criado traçoo para argentina
fig.add_trace( #---->>> Adicionar traço
    go.Scatter(  #---->>> Objeto recebe parametros go.Scatter
        x=[angentina['Ano'].iloc[0]],  #---->>> eixo x = dataframe[coluna] exibido. iloc[0] para a linha iniciar de 0
        y=[angentina['Argentina'].iloc[0]],  #---->>> eixo y = dataframe[coluna] exibido. iloc[0] para a linha iniciar de 0
        mode='lines',  #---->>> modo de exibição 'line'/linhas
        name='Imigrantes - Argentina',  #---->>> nome da linha
        line=dict(width=4)))  #---->>> direção e espesura da linha

#Layout mantido 
fig.update_layout(  #---->>> Editando layout
    title=dict(  #---->>> titulo
        text='<b>Imigração do Brasil para o Canadá no período de 1980 a 2013</b>',  #---->>> Titulo em negrito <b>...</b>
        x=0.12,  #---->>> Posição horizontal(12% da largura da firgura.)
        xanchor='left',  #---->>> Alinhamento a esquerda
        font=dict(size=20)),  #---->>> tamanho do titulo
    xaxis=dict(  #---->>> Definiçies do eixo X
        range=[1980, 2013],  #---->>> Menor e maior valor exibido.
        autorange=False,  #---->>> Se será ajustado automaticamentoe. True == Sim, False == Não
        title='<b>Ano</b>'),  #---->>> Titutlo tambem em negrito.
    yaxis=dict(range=[0, 3000], autorange=False, title='<b>Número de imigrantes</b>'),  #---->>> Definições do eixo Y
                    
# O botão de ação.                  
    updatemenus=[dict(  #---->>> Adicionando um botão PLAY
        type='buttons',  #---->>>  Tipo botão
        showactive=False,  #---->>> Mostrar atividade == não. Botão não estara ativo no inico
        buttons=[dict(  #---->>> Definiçoes do botão
            label='Play',  #---->>> Legenda 'Play'
            method='animate',  #---->>>  Ativar a animação
            args=[None,  #---->>> Argumento args com fois elementos, none = nehuma camada será afetada.
                  {'frame': {'duration': 100, 'redraw': True},  #---->>>  frame duração de cada quadro
                  'fromcurrent': True}]
        )]
    )],
    width=1500, height=500)  #---->>> Largura e altura do grafico e picels

frames = [go.Frame(
    data=[
        go.Scatter(x=dados_brasil['Ano'].iloc[:i+1], y=dados_brasil['Imigrantes'].iloc[:i+1]), #---->>> ação da linha Brasil
        go.Scatter(x=angentina['Ano'].iloc[:i+1], y=angentina['Argentina'].iloc[:i+1])  #---->>> ação da linha Argentina
    ]
) for i in range(len(dados_brasil))]


fig.frames = frames #---->>> Lista aficionada a figura.frame

fig.show()
1 resposta

Olá, Eviston. Tudo bem?

Muito obrigado por compartilhar aqui com a gente. Parabéns pelo trabalho. Continue com essa dedicação.

Ótimo como você organizou os traços do gráfico, separando os dados do Brasil e da Argentina de forma clara. A estrutura do frames para animação também ficou muito bem implementada.

Se quiser personalizar ainda mais o gráfico, pode adicionar tooltips interativos usando hovertext para exibir informações detalhadas ao passar o mouse sobre os pontos. Veja este exemplo:


fig.add_trace(
    go.Scatter(
        x=dados_brasil['Ano'],
        y=dados_brasil['Imigrantes'],
        mode='markers',
        hovertext=dados_brasil['Imigrantes'],  # Texto ao passar o mouse
        name='Imigrantes - Brasil'
    )
)

Isso faz com que, ao passar o mouse sobre os pontos, o número de imigrantes apareça como um tooltip.

Conte com o apoio do Fórum. Abraços e bons estudos.