使用下拉列表在 Plotly 中交互式过滤数据表

2024-04-08

我正在尝试制作一个交互式表格,其中通过从下拉列表中选择一个值来更改表格的值。这应该只在 Plotly(而不是 Dash)中完成,因为我需要与其他用户共享文件。

例如:

如果我选择通道 1 那么表格应该是

Date A_item B_item C_item
2020-01-27 2 1 9
2020-02-27 8 7 2

如果我选择频道 2 那么表格应该是

Date A_item B_item C_item
2020-03-27 0 10 9
import pandas as pd
import plotly.graph_objects as go

df = pd.DataFrame({"Date":["2020-01-27","2020-02-27","2020-03-27"],
                   "A_item":[2, 8, 0],
                   "B_item":[1, 7, 10],
                   "C_item":[9, 2, 9],
                   "Channel_type":["Channel_1", "Channel_1", "Channel_2"]
                   })

fig = go.Figure()
fig.add_trace(go.Table(
    header=dict(
        values=items,
        font=dict(size=10),
        align="left"
    ),
    cells=dict(
        values=..... ,
        align = "left")
    ))

updatemenu= []
buttons=[]
for channel in df['Channel_type'].unique():
    buttons.append(dict(method='update',
                        label=channel,
                        args=[{.....}])
                  )

updatemenu=[]
your_menu=dict()

updatemenu.append(your_menu)

updatemenu[0]['buttons']=buttons
updatemenu[0]['direction']='down'
updatemenu[0]['showactive']=True
fig.update_layout(updatemenus=updatemenu)

fig.show()

  • 您可以修改数字的内容。对于您注意到的用例,它是修改的cells内容
  • 更新菜单是静态的,因此它是数据帧上的多个静态视图
  • 下面的代码
import plotly.graph_objects as go

df = pd.DataFrame(
    {
        "Date": ["2020-01-27", "2020-02-27", "2020-03-27"],
        "A_item": [2, 8, 0],
        "B_item": [1, 7, 10],
        "C_item": [9, 2, 9],
        "Channel_type": ["Channel_1", "Channel_1", "Channel_2"],
    }
)

fig = go.Figure(go.Table(header={"values": df.columns}, cells={"values": df.T.values}))
fig.update_layout(
    updatemenus=[
        {
            "buttons": [
                {
                    "label": c,
                    "method": "update",
                    "args": [
                        {
                            "cells": {
                                "values": df.T.values
                                if c == "All"
                                else df.loc[df["Channel_type"].eq(c)].T.values
                            }
                        }
                    ],
                }
                for c in ["All"] + df["Channel_type"].unique().tolist()
            ]
        }
    ]
)

多个菜单

Make 更新菜单 list a 列表理解

import plotly.graph_objects as go

df = pd.DataFrame(
    {
        "Date": ["2020-01-27", "2020-02-27", "2020-03-27"],
        "A_item": [2, 8, 0],
        "B_item": [1, 7, 10],
        "C_item": [9, 2, 9],
        "Channel_type": ["Channel_1", "Channel_1", "Channel_2"],
    }
)

fig = go.Figure(go.Table(header={"values": df.columns}, cells={"values": df.T.values}))
fig.update_layout(
    updatemenus=[
        {
            "y": 1 - (i / 5),
            "buttons": [
                {
                    "label": c,
                    "method": "restyle",
                    "args": [
                        {
                            "cells": {
                                "values": df.T.values
                                if c == "All"
                                else df.loc[df[menu].eq(c)].T.values
                            }
                        }
                    ],
                }
                for c in ["All"] + df[menu].unique().tolist()
            ],
        }
        for i, menu in enumerate(["Channel_type", "Date"])
    ]
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用下拉列表在 Plotly 中交互式过滤数据表 的相关文章

随机推荐

  • jQuery DataTables:如何按自定义参数值而不是单元格内容排序?

    我有一个非常常见的用例 我在价格列中显示格式化的价格 例如 20 000 00 因此 当我尝试对它进行排序时 它会将其视为字符串并且排序效果不佳 10 00 20 000 00 5 000 00 我可以使它按数据参数值 非格式化浮点数 排序
  • mail() 超时问题

    当我通过浏览器执行电子邮件脚本时 会返回超时致命错误 除非我大幅增加执行时间 否则它将正常运行 而不是我正在寻找的解决方案 电子邮件已发送 但需要很长时间 平均 5 分钟 才能到达 我的收件箱 考虑到通过命令行它可以完美地工作 我认为 ph
  • 反应本机视频类型错误:未定义不是对象

    所以我尝试使用 npm 中的 React native video 包来播放 YouTube 视频 export default class App extends Component render return
  • 如何让 NSTextField 在自动布局中随着文本增长?

    Lion 中的自动布局应该可以非常简单地让文本字段 以及标签 随其包含的文本一起增长 文本字段在 Interface Builder 中设置为换行 有什么简单而可靠的方法可以做到这一点 方法intrinsicContentSize in N
  • 如何在 ASP.NET Core 5 中使用 IdentityUser 和 IdentityRole 之间的隐式多对多

    我有这两个实体 public class ApplicationUser IdentityUser
  • AF网络。检查所有操作队列的下载进度

    我有一个使用 AFNetworking 制作的 iOS 应用程序 我有一个单例自定义 httpclient 子类 我用它来使用我的 api 并从服务器下载二进制文件 我需要下载大约 100 个文件 迭代我的 url 数组并为每个 url 创
  • 将多个散景 HTML 图嵌入到 Flask 中

    我在 bokeh 网站和 stack Overflow 上搜索了过去 3 个小时 但没有一个是我真正想要的 我已经生成了我的图 并将它们放在 html 文件中 我想要做的就是将绘图嵌入到仪表板中 形成下图白色区域中的多网格状结构 然而 仅添
  • 如何启用或禁用键盘返回键[重复]

    这个问题在这里已经有答案了 当我们在文本字段中输入字符时 它会启用返回键 但是在我们的需求中 当长度大于5时 我们需要启用返回键 但是现在只要我们输入字符 它就会启用返回键 我们是否需要自定义键盘或者是否有其他可用的解决方案 提前致谢 好吧
  • 如何编写正则表达式从字符串中提取数值?

    我有一根绳子str 9 0 hr or str 9 0 hr 在这种情况下我只想要整数值9 0 语言是 Ruby 1 9 2 I d use number str d d 或者 如果小于 1 0 的值需要前导 0 number str d
  • 光栅化 matplotlib 轴内容(但不包括框架、标签)

    在一篇文章中 我正在生成变形有限元网格图 并使用 matplotlib 的 polycollection 对其进行可视化 图像保存为 pdf 高密度网格会出现问题 这种简单的方法会导致文件太大且渲染过于密集而无法实用 对于这些网格 将每个元
  • 在 R 中使用具有不均匀长度变量的熔化/铸造

    我正在处理一个想要旋转的大型数据框 以便列中的变量成为顶部的行 我发现 reshape 包在这种情况下非常有用 除了强制转换函数默认为 fun aggregate length 之外 大概这是因为我是按 案例 执行这些操作 并且测量的变量数
  • 当返回类型为 Option[Error] 时处理快速失败

    我已经发布了很多关于 Scala 中的故障处理的问题 我真的感谢大家的回答 我理解在处理 Either 和 Scalaz 或 a 时的选择 以便理解 我还有另一个 最后一个 问题 当操作处理外部非功能世界 例如数据库 时 如何执行快速失败的
  • 在 SQL 数据库中保持 RSS 提要唯一的最佳实践

    我正在开发一个项目 该项目显示来自不同站点的 RSS 提要 我将它们保存在数据库中 我的程序每 3 小时获取一次并将它们插入到 SQL 数据库中 我希望提供者有独特的记录 不要显示重复的内容 但问题是一些提供商不提供 GUID 字段 而其他
  • 全局 $sce.trustAsResourceUrl()

    我怎样才能做这样的事情 sce trustAsResourceUrl URL HERE 在全球范围内 就像在主应用程序中一样config or run 函数 以便任何 iFrame img src 等具有URL HERE将工作 文档对此的解
  • 在rabbitmq配置spring boot中在AMQP中配置多个Vhost

    我正在实现一个项目 我必须在rabbitmq中的不同虚拟主机之间发送消息 使用 SimpleRoutingConnectionFactory 但得到 java lang IllegalStateException 无法确定查找键的目标 Co
  • 休眠:不想节省毫秒

    我遇到了一个小问题 我在网上没有找到合适的解决方案 因为我的问题对于搜索引擎来说有点棘手 有很多关于休眠节省毫秒的主题 但我的问题是别的 事实上 我有一个数据库 它保存我的日期 如下所示 2014 03 20 10 58 09 I used
  • 如何使用 cartopy 添加点特征形状文件以进行地图绘制

    我有两个形状文件 一个是点要素形状文件 名为 point shp 另一个是名为 polygon shp 的多边形形状文件 我想使用 cartopy 添加到地图中 我设法添加 polygon shp 但添加 point shp 失败 这是我的
  • android gradle MonkeyTalk 构建问题

    我正在使用 MonkeyTalk 来进行写入测试这个演示 https github com georgepapas android gradle monkey talk demo 我正在使用 AndroidAnnotations 2 7 1
  • gridview 中 nvarchar 附近的语法不正确

    我在更新 gridview 的列时遇到问题 当我尝试更新该字段时出现此错误 nvarchar 附近的语法不正确 必须声明标量变量 pid 这是我的一段代码
  • 使用下拉列表在 Plotly 中交互式过滤数据表

    我正在尝试制作一个交互式表格 其中通过从下拉列表中选择一个值来更改表格的值 这应该只在 Plotly 而不是 Dash 中完成 因为我需要与其他用户共享文件 例如 如果我选择通道 1 那么表格应该是 Date A item B item C