es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe una forma de actualizar constantemente una figura de gráfico mientras un interruptor está encendido en Dash Plotly Python?

Tengo una función que actualiza la figura de un gráfico utilizando un algoritmo, y una función de retorno de llamada para devolver la figura del gráfico (entre muchas otras cosas). Esta es la idea básica:

for i in range(0,5):
time.sleep(0.1)
randomfunction(i)
return plot

¿Cómo puedo actualizar el gráfico sin romper el bucle? He intentado usar yield en lugar de return sin éxito, ya que la función de retorno de llamada no espera que se genere una clase de generador como salida.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para actualizar el gráfico sin interrumpir el ciclo, puede utilizar el componente dcc.interval de la librería dash-core-components. Este componente le permite actualizar el gráfico a intervalos regulares sin interrumpir el ciclo. La idea básica es definir una función de devolución de llamada que actualice la figura del gráfico utilizando su algoritmo y devuelva la figura actualizada. Luego, puede utilizar el componente dcc.interval para activar esta función de devolución de llamada cada n milisegundos (donde n es el tiempo del intervalo).

    Aquí hay un ejemplo de código:

    import dash
    import dash_core_components as dcc
    import dash_html_components as html
    from dash.dependencies import Output
    
    # define your app
    app = dash.Dash(__name__)
    
    # define your layout
    app.layout = html.Div(
        dcc.Graph(id='example-graph'),
        dcc.Interval(
            id='interval-component',
            interval=100, # in milliseconds
            n_intervals=0
        )
    )
    
    # define your callback function
    @app.callback(
        Output('example-graph', 'figure'),
        [Input('interval-component', 'n_intervals')]
    )
    def update_graph(n):
        randomfunction(n) # your algorithm that updates the graph figure
        return plot
    
    # run the app
    if __name__ == '__main__':
        app.run_server(debug=True)
    

    En este ejemplo, el componente dcc.Interval activa la función update_graph cada 100 milisegundos. El argumento n_intervals se pasa a la función como parámetro, que puede usar para actualizar el gráfico con su algoritmo. Finalmente, la figura actualizada se devuelve mediante la función y se muestra en el gráfico. De esta manera, el ciclo continúa ejecutándose y el gráfico se actualiza en intervalos regulares sin interrupción.

Comments are closed.