【发布时间】:2020-09-14 17:37:58
【问题描述】:
我正在按照 dash 文档中的指导创建多页应用程序:https://dash.plotly.com/urls
我的问题是数据总共包含四个数据帧,并且我的应用程序中的三个页面中的每一个都使用多个这些页面来可视化内容。我试图避免每次调用其中一个页面时重新加载数据帧。这可能吗?怎么样?
目前,我正在尝试首先使用 index.py 中的函数加载 df,然后加载其他页面:
df_fz, df_md, df_auf, df_mat = get_dfs()
from apps import app1, app2, app3
[...]
@app.callback(Output('page-content', 'children'),
[Input('url', 'pathname')])
def display_page(pathname):
if pathname == '/app1':
return app1.layout
elif pathname == '/app2':
return app2.layout
else:
return app3.layout
app1 到 app3 中的每一个都使用数据帧,就好像它们是在脚本顶部加载的一样,但是由于未定义 df,因此此代码会引发错误。 app3 外观的一个最小示例:
layout = html.Div([
html.H3('App 3'),
dcc.Dropdown(
id='app-3-dropdown',
options=[
{'label': 'App 3 - {}'.format(i), 'value': i} for i in [df_fz.Value]
]
),
html.Div(id='app-3-display-value'),
])
@app.callback(
Output('app-3-display-value', 'children'),
[Input('app-3-dropdown', 'value')])
def display_value(value):
return 'You have selected "{}" but in App 3'.format(value)
【问题讨论】:
标签: python plotly plotly-dash