【发布时间】:2021-10-18 06:03:54
【问题描述】:
我正在尝试在此示例中使用不同的元素列表“A”和“B”作为我的网络图的下拉选项。我更新了元素,但它没有显示在更改中。我想知道需要纠正什么,以便我可以使用下拉菜单选择不同的图形(“A”或 B)。请在下面找到我的代码。
import dash
import dash
from dash import dcc
from dash import html
import pandas as pd
import dash_cytoscape as cyto
from dash.dependencies import Input, Output
import plotly.express as px
elements_list = {
'A' : [{'data': {'id': 'ca', 'label': 'Canada'}},
{'data': {'id': 'on', 'label': 'Ontario'}},
{'data': {'id': 'qc', 'label': 'Quebec'}},
{'data': {'source': 'ca', 'target': 'on'}},
{'data': {'source': 'ca', 'target': 'qc'}}],
'B' : [{'data': {'id': 'ca', 'label': 'Canada'}},
{'data': {'id': 'on', 'label': 'Ontario'}},
{'data': {'id': 'qc', 'label': 'Quebec'}}]
}
graphs = ['A', 'B']
app = dash.Dash(__name__)
my_layout = {'name': 'grid'}
my_style = {'display': 'inline-block', 'width': '1000px', 'height': '800px', 'border': '2px black solid'}
app.layout = html.Div(children=[
html.H1("My Network", style={'color': 'black', 'fontSize': 32}),
html.Br(),
dcc.Dropdown(
id='graph-input',
value=graphs[0],
clearable=False,
options=[
[{'label': graphs[i], 'value': graphs[i]} for i in range(0, len(graphs))]
]
),
html.Br(),
cyto.Cytoscape(
id='network-output',
elements=elements_list['A'], # How do I have an option for different elements here?
layout=my_layout,
style=my_style
),
html.Br()
])
@app.callback(Output('network-output', 'elements'),
Input('graph-input', 'value'))
def update_elements(value):
elements = elements_list[value]
if __name__ == '__main__':
app.run_server(debug=False, host='0.0.0.0', port=8051)
提前致谢。
【问题讨论】:
-
— 我的回答有帮助吗?还是您在寻找不同的东西?如果是这样,您介意接受并支持它。并将标签
python添加到您的问题中。所有涉及 python 的问题都应始终使用该标签进行标记,无论其 python 2.7 或 3+(使用 python-3.x 将专门针对仅与 python 3 可能/相关的事情有关的问题)。谢谢! ????☮️✌️
标签: python-3.x element plotly-dash cytoscape