我将按照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
到app3的每个app1都使用数据帧,就好像它们是在其脚本的顶部加载的一样,但是这段代码原样抛出了一个错误,因为没有定义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)
发布于 2020-09-22 17:26:55
试着将你的数据帧放在一个数据集文件夹中,并将它们连接到每个应用程序页面中。如下所示:
PATH = pathlib.Path(__file__).parent
DATA_PATH = PATH.joinpath("../datasets").resolve()
df = pd.read_csv(DATA_PATH.joinpath("mydata.csv"))
以下是如何使用Dash创建多页面应用程序的教程:
发布于 2021-01-20 03:49:06
如果您使用https://dash.plotly.com/urls中的以下文件结构-
- app.py
- index.py
- apps
|-- __init__.py
|-- app1.py
|-- app2.py
尝试使用这种方法读取'app.py‘文件中的数据帧。由于“app1.py”、“app2.py”、“app3.py”中的每一个都使用这些数据帧,因此请在这些文件中导入df,即在“app1.py”代码中导入df:
from app import app
from app import df_fz, df_md, df_auf, df_mat
其他文件也是如此。
https://stackoverflow.com/questions/63889259
复制