使用两个下拉按钮构建一个散点图,一个用于 x 轴,一个用于 y 轴

2024-01-12

我希望构建一个散点图,但使用 2 个下拉列表,我可以在一个用于 x 轴的变量和另一个用于 y 轴的变量之间切换(例如总测试和总案例,或最近案例和总案例),我尝试构建一个我通过替换找到的解决方案

cols_dd = ["Total tests", "Total cases", "Total deaths"]

for value in cols_dd: 

with

cols_dd = {"Total tests":"Total cases", "Total deaths":"Recent cases", "Population":"Total vaccinations"}

k,v in cols_dd.items(): 

and the using k and v in place of values but it returns an error ('dict_keys' object is not subscriptable)

有人可以分享一种实现此目的的方法吗,这是我的代码。

import pandas as pd
import plotly.express as px
import plotly.graph_objects as go

# get OWID data
df = pd.read_csv(
    "https://raw.githubusercontent.com/owid/covid-19-data/master/public/data/latest/owid-covid-latest.csv"
)
# rename columns as sample code uses other names....
df = df.rename(
    columns={
        "location": "Location",
        "iso_code": "Iso code",
        "total_tests": "Total tests",
        "people_vaccinated_per_hundred": "Vaccines",
        "new_cases": "Recent cases",
        "total_cases": "Total cases",
        "total_deaths": "Total deaths",
        "total_vaccinations": "Total vaccinations",
        "people_vaccinated": "People vaccinated",
        "population": "Population",
        "total_boosters": "Vaccination policy",
    }
).fillna(0)

cols_dd = {"Total tests":"Total cases", "Total deaths":"Recent cases", "Population":"Total vaccinations"}


fig = go.Figure()

for k,v in cols_dd.items():
    fig.add_traces(px.scatter(df, x=k, y=v, color="Location",
            hover_data={
                "Iso code": False,
                "Vaccines": True,
                "Total tests": ": ,0.f",
                "Recent cases": ": ,0.f",
                "Total cases": ": ,0.f",
                "Total deaths": ": ,0.f",
                "Total vaccinations": ": ,0.f",
                "People vaccinated": ": ,0.f",
                "Population": ": ,0.f",
                "Vaccination policy": ": 0.f",
            },
            color_continuous_scale="spectral_r",
            hover_name="Location",
        )
        .update_traces(visible=(k == list(cols_dd.keys()[0]))
        .data
    ))


fig.update_layout(
    updatemenus=[
        {
            "buttons": [
                {
                    "label": value,
                    "method": "update",
                    "args": [
                        {"visible": [v2 == value for v2 in cols_dd]},
                        {"title": f"<b>{k}</b> vs <b>{v}</b>"},
                    ],
                }
                for k in cols_dd
            ]
        }
    ]
)

您可以将所有变量组合构建为轨迹和菜单。

cols_dd = ["Total tests", "Total cases", "Total deaths"]
hd = {
    "Iso code": False,
    "Vaccines": True,
    "Total tests": ": ,0.f",
    "Recent cases": ": ,0.f",
    "Total cases": ": ,0.f",
    "Total deaths": ": ,0.f",
    "Total vaccinations": ": ,0.f",
    "People vaccinated": ": ,0.f",
    "Population": ": ,0.f",
    "Vaccination policy": ": 0.f",
}

# px.scatter(df, x="Total cases", y="Total deaths", hover_data=hd, hover_name="Location")
fig = go.Figure()
for k, v in itertools.combinations(cols_dd, 2):
    figt = px.scatter(df, x=k, y=v, hover_data=hd, hover_name="Location").update_traces(
        visible=False
    )
    fig = fig.add_traces(figt.data)

fig.update_layout(
    updatemenus=[
        {
            "buttons": [
                {
                    "label": f"{k} - {v}",
                    "method": "update",
                    "args": [
                        {
                            "visible": [
                                (k2 == k and v2 == v)
                                for k2, v2 in itertools.combinations(cols_dd, 2)
                            ]
                        },
                        {"title": f"<b>{k} - {v}</b>"},
                    ],
                }
                for k, v in itertools.combinations(cols_dd, 2)
            ]
        }
    ],
    margin={"l": 0, "r": 0, "t": 25, "b": 0},
).update_traces(visible=True, selector=0)

独立的

cols_dd = ["Total tests", "Total cases", "Total deaths"]

fig = go.Figure(
    go.Scatter(
        x=df[np.random.choice(cols_dd, 1)[0]],
        y=df[np.random.choice(cols_dd, 1)[0]],
        hovertemplate='x: %{x} <br>y: %{y}',
        mode="markers"
    )
)

fig.update_layout(
    updatemenus=[
        {
            "buttons": [
                {
                    "label": f"x - {x}",
                    "method": "update",
                    "args": [
                        {"x": [df[x]]},
                        {"xaxis": {"title": x}},
                    ],
                }
                for x in cols_dd
            ]
        },
        {
            "buttons": [
                {
                    "label": f"y - {x}",
                    "method": "update",
                    "args": [{"y": [df[x]]}, {"yaxis": {"title": x}}],
                }
                for x in cols_dd
            ],
            "y": 0.9,
        },
    ],
    margin={"l": 0, "r": 0, "t": 25, "b": 0},
)
fig
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用两个下拉按钮构建一个散点图,一个用于 x 轴,一个用于 y 轴 的相关文章

  • 对 Python DataFrame 进行子集化

    我正在从 R 过渡到 Python 我刚刚开始使用 Pandas 我有一个可以很好地子集化的 R 代码 k1 lt subset data Product p id Month lt mn Year yr select c Time Pro
  • cv2.face.mindistancepredictcollector() 错误

    我已经安装了带有额外模块的 opencv 3 1 0 但是当我尝试使用 gt gt gt s cv2 face MinDistancePredictCollector 它返回一个错误 Traceback most recent call l
  • 地图与星图的性能?

    我试图对两个序列进行纯Python 没有外部依赖 逐元素比较 我的第一个解决方案是 list map operator eq seq1 seq2 然后我发现starmap函数来自itertools 这看起来和我很相似 但事实证明 在最坏的情
  • Accel 无法在 gedit 3 插件中工作

    我试图为 Gedit 3 编写一个使用 GObject 自省的小插件 下面显示的代码的相关部分只是为了建立一个环境 然后我可以将函数放入按钮的回调中 但是 该按钮的加速器不起作用 这段代码有什么问题 我正在使用教程here http www
  • 如何更改条形图上的 y 轴限制?

    我有一个df 我从中索引了europe n我绘制了一个条形图 europe n r 5 c 45 looks like this df Country string df Population numeric 变量 plt bar df C
  • Weasyprint 在调用 write_pdf 时获得未定义的属性:“AttributeError:‘PosixPath’对象没有属性‘read_text’”

    我正在 ubuntu 18 04 上运行 weasyprint 项目 并尝试创建一个 pdf 当我尝试设置页脚图像时 问题就开始了 我正在 python 3 6 7 上运行 这是我调用 weasyprint 的代码 import sys i
  • 字母表中的加密和解密 - Python GCSE

    我目前正在尝试为学校编写一个程序 以便加密和解密输入的消息 我需要加密或解密的消息仅在字母表中 没有其他符号或密钥 例如 使用消息车加密输入的偏移量为 5 我希望它输出 afs 有人可以帮忙吗 这是我目前的代码 def find offse
  • 按字段名称对命名元组列表进行排序的 Pythonic 方法

    我想对命名元组列表进行排序 而不必记住字段名的索引 我的解决方案看起来相当尴尬 希望有人能有一个更优雅的解决方案 from operator import itemgetter from collections import namedtu
  • 在 Ubuntu 上使用 Python 获取显示器分辨率

    对于 Ubuntu win32api 中是否有与 GetSystemMetrics 相当的代码 我需要获取显示器的宽度和高度 以像素为单位 我可以建议一些可以使用的方法 不过我还没有使用过 xlib 版本 1 xlib Python 程序的
  • 图像堆栈的最大强度投影

    我正在尝试重新创建该功能 max array 3 来自 MatLab 它可以获取 N 个图像的 300x300px 图像堆栈 我在这里说 图像 因为我正在处理图像 实际上这只是一个大的双数组 300x300xN 并创建一个 300x300
  • 在 (i)python 脚本中从 jupyter 内核获取输出

    我想从单个 ipython 会话中打开多个内核 在这些内核上运行代码 然后收集结果 但我不知道如何收集结果 甚至不知道如何查看 stdout stderr 我怎样才能做这些事情呢 到目前为止我所得到的 我已经使用如下代码管理了前两个步骤 打
  • 对于 pygtk 应用程序来说,什么是好的嵌入式浏览器?

    我计划在我的 pygtk 应用程序中使用嵌入式浏览器 并且我正在 gtkmozembed 和 pywebkitgtk 之间进行辩论 两者之间有什么引人注目的区别吗 还有我不知道的第三种选择吗 应该注意的是 我不会使用它来访问网络上的内容 我
  • 为什么全新安装后会有pip和conda包?

    All Windows 10 64 位 d l Anaconda 2 5 0 与 Python3 64 位并安装 全新安装后我输入conda list 并且 在软件包中 我看到 重复像 jupyter 1 0 0 py35 1 jupyte
  • 多线程写入文件

    前几天刚开始使用 python 对多线程的整个概念还很陌生 我在多线程时写入文件时遇到问题 如果我按照常规方式执行此操作 它会不断覆盖正在写入的内容 使用 5 个线程写入文件的正确方法是什么 不降低性能的最佳方法是在所有线程之间使用队列 每
  • import numpy 和 import numpy as np 之间的区别

    我明白 如果可能的话 应该使用 import numpy as np 这有助于避免由于命名空间引起的任何冲突 但我注意到虽然下面的命令有效 import numpy f2py as myf2py 以下不 import numpy as np
  • 具有条件的重复行 pandas dataframe python

    我的数据框有问题 我的 df 是 product power brand product 1 3 x 1500W brand A product 2 2x1000W 1x100W product 3 1x1500W 1x500W brand
  • 在Python中引用不带换行符的长字符串

    我正在尝试在 Python 中编写一个长字符串 该字符串显示为 OptParser 选项的帮助项 在我的源代码 py 文件中 我想放置换行符 以便我的代码不会花费新行 但是 我不希望这些换行符影响代码运行时该字符串的显示方式 例如 我想写
  • 收到的标签值 1 超出了 [0, 1) 的有效范围 - Python、Keras

    我正在使用具有张量流背景的 keras 开发一个简单的 cnn 分类器 def cnnKeras training data training labels test data test labels n dim print Initiat
  • Beautiful Soup 获取动态表数据

    我有以下代码 url https www basketball reference com leagues NBA 2017 standings html all expanded standings html urlopen url so
  • 在字典理解中为 locals() 添加下标失败并出现 KeyError [重复]

    这个问题在这里已经有答案了 我对 Python 的奇怪行为感到困惑locals 基本上我想从字典中获取一个项目locals 在字典理解中 但它失败了 这是一个非常基本的事情 所以 gt gt gt foo 123 gt gt gt bar

随机推荐

  • vim 复制并替换文本

    可以说我有这样的文字 test lorem test2 ipsum 我想复制 lorem 并粘贴到 ipsum 中 我尝试做yi 在 lorem 上 然后在 ipsum 上做了ci 但这用 ipsum 取代了我的 Pastebin 我以前的
  • 绑定时,knockoutjs 选择更改事件被触发

    我有这个淘汰码 http jsfiddle net nickbuus Rwabt http jsfiddle net nickbuus Rwabt 问题是 每当下拉选择框被填满时 就会调用更改事件
  • 为什么这种类型的双关不是未定义的行为?

    这是一个我认为会调用未定义行为的玩具示例 include
  • 突出显示活动选项卡 - CSS

    我有一个使用 CSS 的小型选项卡式导航设置 当鼠标悬停在选项卡上时 颜色会发生变化 很棒 但是 当我单击一个选项卡并导航到相应的页面时 我希望该选项卡 活动选项卡 保持突出显示 指示当前页面 我目前正在通过使用类 currenttab 然
  • 如何限制asp.net中的文件夹访问

    如何限制asp net中的文件夹访问 就像我不希望任何其他人通过链接在浏览器中看到我的上传文件夹http www example com Uploads http www example com Uploads 对于下一代 对我有用的答案是
  • 列表作为字典的键

    我有多个元组列表 例如 1 2 3 4 2 5 6 7 3 我希望将其作为字典的键 因此字典中的每个键都是元组列表 不幸的是 根据TypeError我越来越 unhashable type list 看来python不喜欢哈希列表 我的元组
  • VBScript DateDiff 月份

    我在获取两个日期之间的月份日期差异时遇到问题 这是一个示例 DateDiff m 2014 10 17 2014 10 30 上面的代码返回 0 个月 因为它还不到一个月 但 DateDiff m 2014 10 17 2014 11 01
  • MongoDB C# 使用 Guid 更新插入

    当尝试在 Mongo 中执行 upsert 操作时 我希望它生成 ID 的 GUID 而不是对象 ID 在本例中 我正在检查以确保具有特定属性的对象尚不存在 并且如果发生更新 实际上会引发异常 这是类定义的存根 public class E
  • 我是否需要同步 invokeAll 调用的结果?

    我正在增强现有的算法 该算法由多个独立步骤组成 以使用并发任务 每个任务都会创建多个对象来保存其结果 最后 我想要一个从控制方法返回的所有结果的列表 目前 我的代码看起来像这样 private final ExecutorService p
  • iOS 上的 Chrome 中未触发 .click 事件

    当用户单击移动设备上的菜单栏时 我使用以下代码在我的网站上显示下拉菜单 mobile menu click function nav toggleClass open mobile menu toggleClass open 它在桌面浏览器
  • 使用正则表达式解析有效的父目录

    给定字符串a b c d它代表一个完全限定的子目录我想为父树上的每个步骤生成一系列字符串 即a b c a b and a 使用正则表达式我可以做一个非贪婪的 这会给我匹配的a b and c或贪婪的 这会给我一场比赛a b c 有没有办法
  • 我可以随我的应用程序一起分发 JDK 吗?

    我正在开发一个名为妖娆 http enchanting robotclub ab ca 该应用程序基于Scratch http scratch mit edu 发出 Java 源代码并对其进行编译 以便上传到 LEGO Mindstorms
  • 用于生产时 Sklearn MultiLabelBinarizer() 错误

    编辑 我已更改代码 从 mlb 更改为 TfIdfVectorizer 我仍然面临一个问题 请看下面我的代码 from sklearn externals import joblib from sklearn preprocessing i
  • 配置 Gradle 以将主类和测试类包含到我的 .jar 存档中

    如何配置 Gradle 以将主类和测试类包含到我的 jar 存档中 目前构建的 jar构建 库目录缺少我的测试类 它仅包括来自以下来源的类项目根目录 src main java com packageGradle 将它们编译成后的 jar
  • 如何在应用程序未运行时模拟位置

    我正在构建一个具有地理围栏功能的 iOS 8 应用程序 我需要对此进行测试 并且我知道我可以使用预配置的位置或提供 GPX 文件来模拟 Xcode 中的位置 然而 由于这个应用程序需要在被杀死时根据区域监控进行操作 用户在多任务处理中向上滑
  • 如何使用自定义工厂方法注册开放泛型?

    TL DR 我可以用 Autofac 创建一个通用工厂 以便我可以注入IProduct
  • 将列表列转换为数据框

    我在 Spark 数据框中有一列列表 features 0 45 63 0 0 0 0 0 0 0 85 0 69 0 0 89 56 0 0 0 0 如何将其转换为 Spark 数据框 其中列表中的每个元素都是数据框中的一列 我们可以假设
  • 分析网络软件/具有大量系统调用等待的分析软件

    我正在开发一个复杂的网络软件 但我无法确定如何提高系统性能 特别是在使用阻塞同步调用的软件部分 由于系统的这一部分正在进行大量计算 因此几乎不可能确定该组件的缓慢是由这些计算引起的还是由于等待系统的其他部分引起的 是否有任何轻量级分析器可以
  • 在模式推断解析 json 中检测到格式错误的记录

    我在尝试使用 ADF 中的数据集解析从 Blob 存储读取的基本 Json 时遇到一个非常令人沮丧的错误 我的 Json 如下 Bid 0 197514880839 BaseCurrency AED Bid 0 535403560434 B
  • 使用两个下拉按钮构建一个散点图,一个用于 x 轴,一个用于 y 轴

    我希望构建一个散点图 但使用 2 个下拉列表 我可以在一个用于 x 轴的变量和另一个用于 y 轴的变量之间切换 例如总测试和总案例 或最近案例和总案例 我尝试构建一个我通过替换找到的解决方案 cols dd Total tests Tota