Plotly-Dash:如何过滤具有多个数据框列的仪表板?
发布日期:2025-05-05 17:05:47 浏览次数:2 分类:精选文章

本文共 2304 字,大约阅读时间需要 7 分钟。

安装Plotly-Dash库是创建交互式数据可视化应用的第一步。可以通过以下命令在终端或命令提示符中安装:

pip install dash plotly

接下来,我们可以创建一个简单的Dash应用程序。这个应用程序包含两个数据框和一个过滤器,允许用户根据输入筛选数据框中的行。

以下是一个实现这一功能的Python代码示例:

import dashfrom dash import dcc, htmlimport pandas as pd# 创建数据框df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})df2 = pd.DataFrame({'C': [7, 8, 9], 'D': [10, 11, 12]})# 创建应用程序app = dash.Dash(__name__)# 创建过滤器filter = dcc.Input(id='filter', type='text', placeholder='Filter...')# 创建数据框列dataframe1 = html.Div([       html.Table([               html.Thead(html.Tr([html.Th(col) for col in df1.columns])),               html.Tbody([html.Tr([html.Td(cell) for cell in row]) for row in df1.values])    ])], id='dataframe1')dataframe2 = html.Div([       html.Table([               html.Thead(html.Tr([html.Th(col) for col in df2.columns])),               html.Tbody([html.Tr([html.Td(cell) for cell in row]) for row in df2.values])    ])], id='dataframe2')# 设置应用程序布局app.layout = html.Div([filter, dataframe1, dataframe2])# 过滤数据框1的回调函数@app.callback(    output=Output('dataframe1', 'children'),    inputs=[Input('filter', 'value')])def filter_dataframe1(value):    if value:        filtered_df = df1[df1.apply(lambda x: all([x[col].__contains__(value) for col in df1.columns])).any()]        return html.Div([            html.Table([                html.Thead(html.Tr([html.Th(col) for col in filtered_df.columns])),                html.Tbody([html.Tr([html.Td(cell) for cell in row]) for row in filtered_df.values])            ])        ])    return dataframe1# 过滤数据框2的回调函数@app.callback(    output=Output('dataframe2', 'children'),    inputs=[Input('filter', 'value')])def filter_dataframe2(value):    if value:        filtered_df = df2[df2.apply(lambda x: all([x[col].__contains__(value) for col in df2.columns])).any()]        return html.Div([            html.Table([                html.Thead(html.Tr([html.Th(col) for col in filtered_df.columns])),                html.Tbody([html.Tr([html.Td(cell) for cell in row]) for row in filtered_df.values])            ])        ])    return dataframe2# 运行应用程序if __name__ == '__main__':    app.run_server(debug=True)

这个应用程序会创建一个包含两个数据框和一个过滤器的仪表板。过滤器允许用户根据输入筛选两个数据框中的行。

测试用例:

  • 启动应用程序,打开浏览器并访问http://127.0.0.1:8050/
  • 在过滤器中输入"3"
  • 查看两个数据框,只有一行包含"3",会显示在相应的表格中
  • 这个应用程序可以用于过滤具有多个数据框列的仪表板。您可以根据需要添加更多的回调函数和过滤条件。

    上一篇:Plotly:如何为 x 轴上的时间序列设置主要刻度线/网格线的值?
    下一篇:Plotly-Dash 存在未知问题并创建“加载依赖项时出错“;通过使用 Python-pandas.date_range

    发表评论

    最新留言

    做的很好,不错不错
    [***.243.131.199]2026年06月18日 13时01分01秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章