Plotly Dash:选择 DataTable 中的行作为回调输出 + 过滤器

Posted

技术标签:

【中文标题】Plotly Dash:选择 DataTable 中的行作为回调输出 + 过滤器【英文标题】:Plotly Dash: Select Rows in DataTable as Callback Output + Filter 【发布时间】:2020-09-19 08:12:07 【问题描述】:

我有一个带有一些显示值的折线图的 DataTable。我想实现它,以便单击图表中的单个点将表数据过滤到该跟踪并选择用户专门单击的行。我使用了 pandas 索引并创建了一个“id”行,以便每一行都有一个与之关联的唯一 id。这是我正在尝试使用的回调

@app.callback(
    [Output("datatable-rfStats", "data"), Output("datatable-rfStats", "selected_row_ids")],
    [Input("dev-lvl-clear", "n_clicks")] + plot_dev_lvl_filter_inputs
)
return filtered_df.sort_values(by=['lastUpdated']).to_dict('records'), [row_id]

我有用于多选行的 DataTable 设置。当我单击折线图时,DataTable 会正确过滤数据,但不会选择请求的行。我已经调试并确认“row_id”在返回的行集中。不确定我是否做错了什么,或者多个输出是否按预期工作。

注意:plot_dev_lvl_filter_inputs 只是一个数组,我用 Inputs() 动态填充我正在显示的图表。如果相关设置,我可以更深入地了解此设置,但所有图形输入都可以正常工作,所以我认为这不是问题

【问题讨论】:

我认为它在过去有效,但在当前版本的 dash 数据表中它似乎不起作用。 【参考方案1】:

试试这个:

@app.callback(
    [Output("datatable-rfStats", "data"), Output("datatable-rfStats", "selected_rows")],
    [Input("dev-lvl-clear", "n_clicks")] + plot_dev_lvl_filter_inputs
)
return filtered_df.sort_values(by=['lastUpdated']).to_dict('records'), [row_id]

不要设置selected_row_ids,而是使用selected_rows

【讨论】:

以上是关于Plotly Dash:选择 DataTable 中的行作为回调输出 + 过滤器的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Python 中的 Plotly 从 Dash 的下拉列表中选择数据集列?

Plotly Dash:图表未根据下拉选择更新

带有一个下拉列表和多个选择器的 Plotly Dash 散点图(全部)

根据 python plotly dash 中先前单选项目/下拉列表中的选择禁用下拉列表

Plotly Dash:下拉组件回调可见性错误

Plotly-Dash:- 文件上传后在 plotly dash 中进行多列过滤