如何根据用户在Dash Plot中的特定输入来处理Dash Plot图中的回调

问题描述 投票:0回答:1

[我试图通过单击提交按钮后返回基于callbackDrop-Down输入的简单图形来处理Date-Picker。>

所以要深入解释,

示例:

关于下图,让我们想象这是我需要的最终结果:

enter image description here

所以这是一个简单的Data-base,看起来就像我用作下图所示:

enter image description here

确定,以便深入了解:

现在,我需要Out-Put一个简单的图,该图显示一条基于以下输入的简单行:

  1. 第一个Drop-Down包含CellName值,类似于Database中的>]
  2. 第二Drop-Down包含我要在图形中输出的特定列名称的列表。
  3. 第3个Date-Picker包含上一个DB图片中Date列中的所有日期。
  4. 最后我要单击此按钮以生成图形。
  5. 所以下面是我的代码:

    import dash
    import dash_core_components as dcc
    import dash_html_components as html
    import pandas as pd
    from sqlalchemy import create_engine
    import datetime
    from datetime import datetime as dt
    from dash.dependencies import Input, Output
    
    # connect db
    engine = create_engine('mssql+pyodbc://WWX542337CDCD\SMARTRNO_EXPRESS/myDB?driver=SQL+Server+Native+Client+11.0')
    cursor = engine.raw_connection().cursor()
    
    start = datetime.datetime(2019, 12, 2)
    end = datetime.datetime(2019, 12, 15)
    
    external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
    
    app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
    
    gsm_kpis = pd.read_sql('SELECT * FROM [myDB].[dbo].[mnm_rotterdam_5_daily_details-20191216081027]',
                           engine)
    
    gsm_kpis_raw = pd.read_sql('SELECT Voice_SetupFailRate_2G, '
                               'Voice_DropRate_2G, Packet_SetupFailRate_2G, '
                               'OutgHandover_SuccesRate_2G, Voice_ErlHr_2G, Packet_DLMBytes_2G, Packet_ULMBytes_2G, '
                               'Availability_2G FROM [myDB].[dbo].[mnm_rotterdam_5_daily_details-20191216081027]',
                               engine)
    
    pd.set_option('display.max_columns', 500)
    pd.set_option('display.width', 1000)
    
    availble_cell = gsm_kpis['CellName'].unique()
    
    app.layout = html.Div([
        dcc.Dropdown(
            id='cell-name-xaxis-column',
            options=[{'label': i, 'value': i} for i in availble_cell],
            value='11063'
        ),
    
        dcc.Dropdown(
            id='myColumns',
            options=[{'label': col, 'value': col} for col in gsm_kpis_raw.columns],
            value='Voice_SetupFailRate_2G'
        ),
    
        dcc.DatePickerRange(
            id='my-date-picker-range',
            min_date_allowed=dt(1995, 8, 5),
            max_date_allowed=dt(2030, 9, 19),
            initial_visible_month=dt(2019, 10, 5),
            start_date=dt(2019, 10, 1),
            end_date=dt(2020, 1, 1)
        ),
        html.Div(id='output-container-date-picker-range'),
    
        html.Button('Submit', id='button'),
    
        dcc.Graph(
            style={'height': 300},
            id='my-graph'
        )
    
    ])
    
    @app.callback(
        Output('my-graph', 'figure'),
        [Input('cell-name-xaxis-column', 'value'),
         Input('myColumns', 'value')])
    
    def update_graph(xaxis_column_name, yaxis_column_name, date_value):
        dff = gsm_kpis[gsm_kpis['Date'] == date_value]
    
        return {
            'data': [dict(
                x = dff[dff['Date'] == xaxis_column_name]['Value'],
                y = dff[dff['Date'] == yaxis_column_name]['Value'],
                text = dff[dff['Date'] == yaxis_column_name]['Cell Name'],
                mode = 'line',
                line = {
                    'size': 15,
                    'opacity': 0.5
                }
            )],
        }
    
    if __name__ == '__main__':
        app.run_server(debug=True)
    

这是我发现的错误:

TypeError: update_graph() missing 1 required positional argument: 'date_value'

我认为处理Call-Back函数有问题...

任何人都可以帮助我该如何处理?

我希望一切都会清楚...

注意:使用Submit按钮不重要

我正在尝试通过单击“提交”按钮后返回基于下拉列表和日期选择器输入的简单图来处理回调。...因此,请深入解释,例如:至于下面的图像,让我们...

python sql-server pandas hyphen
1个回答
0
投票

在此部分:

@app.callback(
    Output('my-graph', 'figure'),
    [Input('cell-name-xaxis-column', 'value'),
     Input('myColumns', 'value')])

def update_graph(xaxis_column_name, yaxis_column_name, date_value):
© www.soinside.com 2019 - 2024. All rights reserved.