python - 带有大表的 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 轴)但也许最好先使用下拉框对新数据框进行排序,然后执行这些操作。但我不知道该怎么做。
解决方案
推荐阅读
- mysql - 如何从同一张表中获取不同id的常见记录?
- .net - SQL 过程超时
- python - 姜戈 | 'function' 对象没有属性'get' | 对于 request.POST.get('email')
- mongodb - Debezium mongodb kafka 连接器没有像在 mongodb 中那样在主题中产生一些记录
- java - FireBase 上传和检索图像 - NullPointerException
- php - 如何使用数据库存储路径显示图像
- python-3.6 - 处理流经 Pub-sub 到 Bigquery 的记录的 unique_id 和时间戳特征
- python - 如何根据压力数组对不包含压力信息的数组进行插值
- c# - 在 c# .NET 4 中将对象添加到列表中
- javascript - 访问不存在的图像 URL 会影响 Web 服务器吗?