2
respostas

[Dúvida] Desafio 5

Seria possível fazer o gráfico usando um único Dataframe possuindo 3 colunas: 'Ano', 'Argentina' e 'Brasil?'

2 respostas

Eu consegui fazer dessa forma:

fig = go.Figure(
    data=[
        go.Scatter(x=[dados_dict['Ano'].iloc[0]], y=[dados_dict['Argentina'].iloc[0]], mode='lines', name='Argentina', line = dict(width = 4)),
        go.Scatter(x=[dados_dict['Ano'].iloc[0]], y=[dados_dict['Brasil'].iloc[0]], mode='lines', name='Brasil', line = dict(width = 4))
    ],
    layout=go.Layout(
        title=dict(
            text='<b>Imigração da Argentina e Brasil para o Canadá (1980-2013)</b>',
            x=0.12,
            xanchor='left',
            font=dict(size=20)
        ),
        xaxis=dict(range=[1980, 2013], autorange=False, title='<b>Ano</b>'),
        yaxis=dict(range=[0, 3000], autorange=False, title='<b>Número de imigrantes</b>'),
        updatemenus=[dict(
            type='buttons',
            showactive=False,
            buttons=[dict(
                label='Play',
                method='animate',
                args=[None, {'frame': {'duration': 100, 'redraw': True}, 'fromcurrent': True}]
            )]
        )],
        width=1000, 
        height=500 
    )
)

frames = [
    go.Frame(
        data=[
            go.Scatter(x=dados_dict['Ano'].iloc[:i+1], y=dados_dict['Argentina'].iloc[:i+1]),
            go.Scatter(x=dados_dict['Ano'].iloc[:i+1], y=dados_dict['Brasil'].iloc[:i+1])
        ]
    )
    for i in range(len(dados_dict))
]

fig.frames = frames

fig.show()

Qual a diferença dessa maneira que eu fiz para o uso do fig.add_trace()?

Olá, William! Como vai?

A sua solução ficou ótima também!

A principal diferença é que data=[...] define os traços iniciais todos de uma vez na criação do gráfico, enquanto fig.add_trace() adiciona cada traço separadamente após o gráfico já estar criado, o que é útil para construções dinâmicas ou condicionais.

Espero ter ajudado e fico à disposição se precisar.

Abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado