簡體   English   中英

一段時間后 Plotly Dash dcc.Interval 失敗:回調錯誤更新 graph.figure

[英]Plotly Dash dcc.Interval fails after a while: Callback error updating graph.figure

我試圖把我的短跑應用從與數據幀中使用的.csv文件自動拉的最新數據dcc.Interval 錯誤代碼沒有提供詳細的解釋,也不總是出現。 我已經嘗試過使用按鈕和設置的 6 秒間隔進行此操作,但結果似乎相同。 Dash 應用程序一開始運行良好,並刷新了幾次,然后開始出現錯誤:

回調錯誤更新圖.figure

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

app = dash.Dash(__name__)
server = app.server

df = pd.read_csv('example.csv', encoding="WINDOWS-1252")

app.layout = html.Div([
    dcc.Graph(id='graph'),
    dcc.Interval(
        id='interval-component',
        interval=1*6000,
        n_intervals=0
    )
])

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

def update_df(n):
    updated_df = pd.read_csv('example.csv', encoding="WINDOWS-1252")
    
    fig = px.scatter(updated_df, x='Date', y='Deviation', height=800)
    
    fig.update_layout(
        yaxis_tickformat = '.0%', 
    )

    fig.update_xaxes(
        rangeslider_visible=True,
        rangeselector=dict(
        )
    )
    
    return fig

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

我認為您的問題必須特別與您的文件有關,因為以下代碼完全基於您提供的(生成隨機匹配 df 時間序列數據除外),每 6 秒間隔完美更新:

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

np.random.seed(2019)


def get_random_deviation_ts_df(N=100):
    rng = pd.date_range("2019-01-01", freq="D", periods=N)
    df = pd.DataFrame(np.random.rand(N, 1), columns=["Deviation"], index=rng)
    df["Date"] = df.index
    return df


app = dash.Dash(__name__)
server = app.server

# df = pd.read_csv('example.csv', encoding="WINDOWS-1252")

app.layout = html.Div(
    [
        dcc.Graph(id="graph"),
        dcc.Interval(
            id="interval-component", interval=1 * 6000, n_intervals=0
        ),
    ]
)


@app.callback(
    Output("graph", "figure"), [Input("interval-component", "n_intervals")]
)
def update_df(n):
    updated_df = (
        get_random_deviation_ts_df()
    )  # pd.read_csv('example.csv', encoding="WINDOWS-1252")

    fig = px.scatter(updated_df, x="Date", y="Deviation", height=800)

    fig.update_layout(yaxis_tickformat=".0%",)

    fig.update_xaxes(rangeslider_visible=True, rangeselector=dict())

    return fig


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

間隔時間序列隨機數據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM