如果没有值'',则绘图不会更新

Plotly graph does not update if there isn't a value ''

我想了解为什么会出现此错误。

我知道这是因为我在下拉列表中设置了值 = ' ':

                       dcc.Dropdown(
                                    id = 'dd_tag_yaxis', 
                                    clearable = False,
                                    placeholder = 'Select tag x-axis',
                                    value = '',
                                    options=[ ], 
                                    style={
                                        'width': '100%'
                                })

但是,如果我删除这个值,在下拉列表中选择一个选项时显示的数字将不再出现,因此,使用这个值是我找到的获得数字的唯一方法显示工作。下面是我正在使用的回调示例。

@app.callback(
    Output("display", "figure" ),
    Input("dd_tag_yaxis", "value")
)

def update_figure(dd_tag_selected):
    zone = 'Zone 1'
    if (dd_tag_selected == ('TIC 3201_SP' or 'TIC 3201_PV' or 'TI_3207')):
        zone = 'Zone 1'
    elif (dd_tag_selected == ('TIC 3203_SP' or 'TIC 3203_PV' or 'TI_3208')):
        zone = 'Zone 2'
    elif (dd_tag_selected == ('TIC 3205_SP' or 'TIC 3205_PV' or 'TI_3208')):
        zone = 'Zone 3'

    print("Graph should be being returned")
    print(dd_tag_selected)
    fig = px.line(df, x=x_axis, y= df1['Oven Temperature Controllers [°C]'][zone][dd_tag_selected], title='Temperature Profile')

    fig.update_layout(transition_duration=500,  xaxis_title = 'Time [h]', yaxis_title = 'Temperature [°C]', )
    return fig

我试过 'if dd_tag_selected == '': return[] ' 在回调中避免收到此错误,但如果我这样做,(尽管错误消失)图形不再显示。

@app.callback(
    Output("display", "figure" ),
    Input("dd_tag_yaxis", "value")
)

def update_figure(dd_tag_selected):
    if dd_tag_selected == '':
        return []
    
    zone = 'Zone 1'
    if (dd_tag_selected == ('TIC 3201_SP' or 'TIC 3201_PV' or 'TI_3207')):
        zone = 'Zone 1'
    elif (dd_tag_selected == ('TIC 3203_SP' or 'TIC 3203_PV' or 'TI_3208')):
        zone = 'Zone 2'
    elif (dd_tag_selected == ('TIC 3205_SP' or 'TIC 3205_PV' or 'TI_3208')):
        zone = 'Zone 3'

    print("Graph should be being returned")
    print(dd_tag_selected)
    fig = px.line(df, x=x_axis, y= df1['Oven Temperature Controllers [°C]'][zone][dd_tag_selected], title='Temperature Profile')

    fig.update_layout(transition_duration=500,  xaxis_title = 'Time [h]', yaxis_title = 'Temperature [°C]', )
    return fig

你可以在这里用图表显示明白我的意思:

我不确定这是否完全按照您希望的方式解决了问题,但在您的 if 语句中,您可以 return 一个空图形。我也在自己构建的 dash 应用程序中完成了此操作。

if dd_tag_selected == '':
   return go.Figure()