回调变量?

Callback for variable?

我有以下代码:

# Import Libraries

import pandas as pd
import numpy as np
import plotly.express as px
import plotly.graph_objects as go
import dash 
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import datetime 

import dash_bootstrap_components as dbc

date_cols = ["date"]
df = pd.read_csv('base.csv', parse_dates=date_cols)

fig=px.bar(df,x='date',y='value_likes',color='type', barmode='group', 
        color_discrete_sequence=px.colors.sequential.deep, template='plotly_white'
        )

likes = df['value_likes'].iloc[-1]


app = dash.Dash(__name__,external_stylesheets=[dbc.themes.BOOTSTRAP])
server = app.server
app.title = "CSV"

app.layout = html.Div([
  dcc.Interval(
            id='interval-component',
            interval=10*1000, # in milliseconds
            n_intervals=0
        ),
  dbc.Container([
      html.H1("REALTIME MONITORING"),
      html.H4("%s" % likes),
      dcc.Interval(id="progress-interval", n_intervals=0, interval=500),
      dcc.Graph(id='graph', figure=fig)
  ],)

])

@app.callback(
    Output('graph', 'figure'),
    [Input('interval-component', "n_intervals")]
)

def streamFig3(value):
    
    global df
    
    dfglobal = pd.read_csv('base.csv',dtype={'date':'string'})
    likes = dfglobal['value_likes'].iloc[-1]
    fig=px.bar(dfglobal,x='date',y='value_likes',color='type', barmode='group',
        color_discrete_sequence=px.colors.sequential.deep_r, template='plotly_white'
        )

    return(fig)

if __name__ == "__main__":
    app.run_server(debug=True)

此代码每 10 秒读取一次 csv 并相应地更新条形图。 但是它不会更新变量 likes,它在第一次加载后保持静态。 有没有办法进行回调,以便 likes 也更新? 提前谢谢你。

解决方法是

@app.callback(
    Output('graph', 'figure'),
    Output('likes-display', 'children'),
    [Input('interval-component', "n_intervals")]
)

def streamFig3(value):

    global df
    
    dfglobal = pd.read_csv('base.csv',dtype={'date':'string'})
    likes=dfglobal['value_likes'].iloc[-1]
    fig=px.bar(dfglobal,x='date',y='value_likes',color='type', barmode='group',
        color_discrete_sequence=px.colors.sequential.deep_r, template='plotly_white'
        )

    return fig, str(likes)

并添加到 dbc.container

html.H4(id='likes-display'),

这将允许 likes 变量在回调中每 n 秒更新一次

这个答案 is based on the reply given here 来自 MichelH