1
resposta

[Bug] Trabalhando na Biblioteca Dash tem um bug na atualização do gráfico

Olá pessoal,

Alguém pode me ajudar?!

Fiz um filtro dentro do callback para trazer informações no gráfico de acordo com a unidade de negócio selecionada.

Até ai tudo certo tudo rodando, porém quando seleciono uma unidade nova que não tem dados tão antigos o gráfico da unidade anterior selecionada.

Mostra os dados que tem da nova, mas fica uma linha da anterior. Parece algo relacionado ao cache.

segue:

app.callback(
    Output('faturamento_geral', 'figure'),
    Input('lista_unidades', 'value')
)
def update_fat_geral(value):
    if value == "Todas Unidades":
        fig9 = px.line(dados_fat, x='mes_data', y='valor_pago',
                       color='ano_data', markers=True)
    else:

        filtro13 = dados_fat['unidade'] == value
        fig9 = px.line(dados_fat[filtro13], x='mes_data',
                       y='valor_pago', color='ano_data', markers=True)
    return fig9
1 resposta

Olá, Fernando, tudo bem com você?

Peço desculpas pela demora no retorno.

Com base na descrição realizada, este comportamento pode estar a acontecendo devido ao cache não ser atualizado corretamente após a seleção de uma nova unidade de negócio. Uma solução será utilizar a propriedade prevent_initial_call no decorator `@app.callback. Ao definirprevent_initial_callcomoTrue, a funçãoupdate_fat_geral` só será executada quando a seleção da unidade de negócio for alterada, evitando assim a exibição de dados antigos do cache.

Segue abaixo o código com esta implementação:

@app.callback(
    Output('faturamento_geral', 'figure'),
    Input('lista_unidades', 'value'),
    prevent_initial_call=True
)
def update_fat_geral(value):
    if value == "Todas Unidades":
        fig9 = px.line(dados_fat, x='mes_data', y='valor_pago',
                       color='ano_data', markers=True)
    else:
        filtro13 = dados_fat['unidade'] == value
        fig9 = px.line(dados_fat[filtro13], x='mes_data',
                       y='valor_pago', color='ano_data', markers=True)
    return fig9

Espero ter ajudado. Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!