首页 > 解决方案 > 带有大表的 Dash plotly 仪表板

问题描述

我正在尝试从数据库中的大表制作仪表板。不幸的是,我在短跑中短暂地工作,我不知道我的错误在哪里。

        cnx = create_engine('mssql+pymssql://server/table')
        df = pd.read_sql_table('tableX', cnx)
        dataset = df;

        ##Dropdown1
    
            options_list = []
            for i in dataset['CurveId'].unique():
                    options_list.append({'label': i, 'value': i})
        ##Dropdown2
    
           options_list2 = []
        for i in dataset['CycleId'].unique():
            options_list2.append({'label': i, 'value': i}) 
    
    ##create dataframe
    
    def datagen():
        dataset = df
        my_sample_data = dataset
    #   my_sample_data=my_sample_data[(my_sample_data.CurveId == input_cat)
        my_sample_data = my_sample_data.reset_index(drop=True)
        my_sample_data.loc[:, 'ActualCurve'] = my_sample_data['ActualCurve'].map(ast.literal_eval)
        my_sample_data['ActualCurve'].tolist()
        my_sample_data = my_sample_data.explode('ActualCurve').reset_index()
        my_sample_data['x_axis'] = dataset.ActualCurve.str[0]
        my_sample_data['y_axis'] = dataset.ActualCurve.str[1]
        
        return(my_sample_data)

    ### plotting
    def fig_generator(sample_data):
        sample_data = df
        sample_data.head()
    #   dataset=dataset[(dataset.CurveId == 3949)]
        sample_data.loc[:, 'ActualCurve'] = sample_data['ActualCurve'].map(ast.literal_eval)
        sample_data['ActualCurve'].tolist()
        sample_data = sample_data.explode('ActualCurve').reset_index()
        sample_data['x_axis'] = sample_data.ActualCurve.str[0]
        sample_data['y_axis'] = sample_data.ActualCurve.str[1]
    
    
        plot_data=[]
    
        for i in range(1,3):
            plot_data = go.Scatter(x=sample_data['x_axis'], y=sample_data['y_axis'])
        plot_layout = go.Layout(title=" This is plot generated using plotly ")
        
        return(fig.data,fig.layout)

###APP
app = dash.Dash()


# HTML defyining cmpnt -->APP layout
app.layout =  html.Div(children=[html.Div("Welcome to the dashboard"),
                                 
                                 html.Div(dcc.Dropdown(id="drop_down1",options=options_list, value='')),
                                 html.Div(dcc.Dropdown(id="drop_down2",options=options_list2, value='')),
                                 
                                 
                                 
                                html.Div(children=[html.P(
                                       id="map-title",
                                       children = "Forecast and validation for Facility ",
                                    ), html.Div(dcc.Graph(id ="plot_area"))
                                                       ],style= {
                                                      "color": "black",
                                                      "text-align": "center","background-color": "yellow",
                                                      "border-style": "dotted","display":"inline-block","width":"75%",
                                                                                                            
                                                    })],style={"width":"100%",'paffing':10})

### creating callback buttons

@app.callback(Output("plot_area","figure"),
   [Input("drop_down1", "value")])

def updateplot(input_cat):
   
    result_df=datagen()
    sample_data = result_df[result_df["CurveId"] == input_cat]

    
    
    trace,layout = fig_generator(sample_data)
    
    return {
        'data': trace,
        'layout':layout
    }



    #Plotly Express
    
#    
#    return (fig_generator(sample_data))
#

#run server
if __name__ == '__main__':
    app.run_server()

谁能给我建议。服务器启动,下拉菜单有效,但图表没有吸引我。我必须编辑基表(从一列(长字符串)我制作两列 x 和 y 轴)但也许最好先使用下拉框对新数据框进行排序,然后执行这些操作。但我不知道该怎么做。

标签: pythonplotly-dash

解决方案


推荐阅读