plotly-dash - 破折号下拉菜单图
问题描述
我正在尝试实现一个仅在用户从下拉菜单中选择它时才显示的实时更新图。我已经使用“间隔”和下拉菜单“氧气”的输入进行了回调。我想如果“value”是“0”那么没有选择图表,我可以返回“null”(???),如果'value'='1',那么图表会更新。这可能吗?还是我的方法不正确?
dcc.Graph(id='live-graph2', animate=False),
dcc.Interval(
id='graph-update',
interval=10000,
n_intervals=0
)),
dbc.Col(html.Div([
dcc.Dropdown(
id='oxygen',
options=[{'label': s, 'value': s}
for s in main_graph.keys()],
value=[],
multi=True),
@app.callback(
dash.dependencies.Output('live-graph2', 'figure'),
[dash.dependencies.Input('oxygen', 'value'),
dash.dependencies.Input('graph-update', 'n_intervals')],
)
def update_graph_scatter_2(n,value):
if value == 0:
....
else:
data = {}
解决方案
我会以不同的方式处理这个问题。
如果您在未选择下拉选项时根本不想显示图表,则Graph
默认情况下该组件不需要在布局中。
相反,您可以创建一个容器组件,您的Graph
组件根据组件的选项值动态附加到该Dropdown
组件。
以下是使用示例数据的简化示例,可根据您的要求进行调整:
import dash
import dash_html_components as html
import dash_core_components as dcc
import plotly.express as px
import dash_bootstrap_components as dbc
df = px.data.iris()
app = dash.Dash(__name__)
app.layout = html.Div(
[
dcc.Interval(id="graph-update", interval=10000, n_intervals=0),
html.Div(id="graph-container"),
dbc.Col(
html.Div(
[
dcc.Dropdown(
id="oxygen",
options=[{"label": s, "value": s} for s in [1, 2, 3]],
value=[],
multi=True,
)
]
)
),
]
)
@app.callback(
dash.dependencies.Output("graph-container", "children"),
[
dash.dependencies.Input("oxygen", "value"),
dash.dependencies.Input("graph-update", "n_intervals"),
],
)
def update_graph_scatter_2(value, n):
if value:
# Change the line below to dynamically create the figure based on value
fig = px.scatter(df, x="sepal_width", y="sepal_length")
return dcc.Graph(id="live-graph2", figure=fig)
return html.Div()
推荐阅读
- node.js - 在 Node.js 中使用 Bull 有条件地重试失败的作业
- java - 如何计算 ArrayList 中的元素在另一个 ArrayList 中出现的频率?
- javascript - AngularJS - 根据所选值显示数据列表
- c# - 无法修改“Transform.position”的返回值,因为它不是变量
- sql - 在 SQL 中动态识别时间段
- node.js - 如何使用 nodejs 从 MMA8451 加速度计中检索人类可读的数据
- spring - 无法从 Spring Boot 连接到 rabbitmq STOMP
- c# - 从在线服务器获取数据时如何使用进度条
- javascript - 如何设置到 .scrollIntoView 行为的定时过渡:平滑?
- sql - Oracle: MAX of SUM of each Group