我正在尝试获取滑块,用户输入和工作表之间的依赖关系。我尝试输出数据并使用回调对其进行更新。建议我在回调中创建表,然后使用“ Div”。定义其在显示器中的位置。
其他信息:
- 表是使用dash_table库从pandas DataFrame创建的。
- 数据采用字典格式。
- 变量
threshold
是由用户输入(滑块或输入)调整的值
如果有人可以帮助我找出表格未显示的原因,我将不胜感激?
这是我的代码:
import dash
import dash_bootstrap_components as dbc
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd
from dash.dependencies import Input,Output
import dash_table
threshold = 0.5
################################################################
###################### Table Data ##############################
################################################################
metrics_index = ["AUC","accuracy","Kappa","Sensitivity (Recall)","Specificity","Precision","F1"]
algo_columns = ["Test-SVM+Naïve B","RF"]
table_data = {"AUC": [threshold * 0.8,threshold * 0.83],"accuracy": [threshold * 0.85,threshold * 0.86],"Kappa": [threshold * 0.66,threshold * 0.69],"Sensitivity (Recall)": [threshold * 0.82,"Specificity": [threshold * 0.78,threshold * 0.79],"Precision": [threshold * 0.78,"F1": [threshold * 0.81,threshold * 0.82]}
data = [i for i in table_data]
table = pd.DataFrame(columns=algo_columns,index=metrics_index,data=[table_data[i] for i in metrics_index])
# display(table)
################################################################
######################## Body ################################
################################################################
body = dbc.Container(
[
dbc.Row(
[
dbc.Col(
[
html.H2("Slider + Manual entry test"),dcc.Slider(
id='my-slider',min=0,max=1,step=0.01,marks={"0": "0","0.5": "0.5","1": "1"},value=threshold
),html.Div(id='update-table')
]
),dbc.Col(
[
html.Div(
[
html.Div(
dcc.Input(id='input-box',type='float',max=0,min=1,value=threshold)
),html.Div(id='slider-output-container')
]
)
]
)
]
)
]
)
app = dash.Dash(__name__,external_stylesheets=[dbc.themes.BOOTSTRAP])
app.layout = html.Div([body])
##############################################################
######################## callbacks ###########################
##############################################################
@app.callback(
dash.dependencies.Output('slider-output-container','children'),[dash.dependencies.Input('my-slider','value')]
)
def update_output(value):
threshold = float(value)
return threshold
# call back for slider to update based on manual input
@app.callback(
dash.dependencies.Output(component_id='my-slider',component_property='value'),[dash.dependencies.Input('input-box','value')]
)
def update_output(value):
threshold = float(value)
return threshold
# call back to update table
@app.callback(
dash.dependencies.Output('update-table','value')]
)
def update_output(value):
threshold = float(value)
table_data = {"AUC": [threshold * 0.8,threshold * 0.82]}
return dash_table.DataTable(
id='update-table',data= table_data.to_dict('records'),columns=[{'id': x,'name': x} for x in table.columns]
)
if __name__ == "__main__":
app.run_server()