Matplotlib - 堆积条形图和工具提示

2024-01-09

This code https://github.com/joferkington/mpldatacursor/issues/47当鼠标悬停在条形图上时返回工具提示。我想修改堆叠条形图的代码,并在鼠标悬停在条形图的部分时获取该部分的特定工具提示。 我不知道如何修改formatter因此。

这是我想要实现的目标的说明。如果鼠标悬停在第三条的蓝色部分,则工具提示将包含信息“ggg, hhh, iii”,如果鼠标悬停在第三条的绿色部分,则工具提示将包含信息“555, 666”。

import numpy as np
import matplotlib.pyplot as plt
from mpldatacursor import datacursor

attendance = [['aaa', 'bbb', 'ccc'],
              ['ddd', 'eee', 'fff'],
              ['ggg', 'hhh', 'iii'],
              ['jjj', 'kkk', 'lll']]

attendance2 = [['111', '222'],
              ['333', '444'],
              ['555', '666'],
              ['777', '888']]

x = range(len(attendance))
y = [10, 20, 30, 40]
y2 = [5, 10, 15, 20]

fig, ax = plt.subplots()
ax.bar(x, y, align='center', bottom=0, color='lightblue')
ax.bar(x, y2, align='center', bottom=y, color='lightgreen')
ax.margins(0.05)
ax.set_ylim(bottom=0)

def formatter(**kwargs):
    dist = abs(np.array(x) - kwargs['x'])
    i = dist.argmin()
    return '\n'.join(attendance[i])

datacursor(hover=True, formatter=formatter)
plt.show()

the kwargs为了mpldatacursor格式化程序包括矩形补丁的详细信息 - 具体来说,bottom, left, height, width等等。在这种情况下,我们只需要知道矩形的底部在哪里 - 如果是0, 我们可以用attendance设置标签,否则我们要使用attendance2.

所以,你可以改变你的formatter函数:

def formatter(**kwargs):
    dist = abs(np.array(x) - kwargs['x'])
    i = dist.argmin()
    labels = attendance if kwargs['bottom'] == 0 else attendance2
    return '\n'.join(labels[i])

结果如下:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matplotlib - 堆积条形图和工具提示 的相关文章

  • 从文本文件中删除特定字符

    我对 Python 和编码都很陌生 我当时正在做一个小项目 但遇到了一个问题 44 1 6 23 2 7 49 2 3 53 2 1 68 1 6 71 2 7 我只需要从每行中删除第三个和第六个字符 或者更具体地说 从整个文件中删除 字符
  • 使用 django-rest-framework 设置对象级权限

    尝试使用 django rest framework 最干净 最规范地管理 django guardian 对象级权限 我想将对象的读取权限 module view object 分配给在执行 POST 时发出请求的用户 我的基于阶级的观点
  • 多处理中的动态池大小?

    有没有办法动态调整multiprocessing Pool尺寸 我正在编写一个简单的服务器进程 它会产生工作人员来处理新任务 使用multiprocessing Process对于这种情况可能更适合 因为工作人员的数量不应该是固定的 但我需
  • 将 numpy 数组合并为单个 int

    numpy 数组怎么可以这样 10 22 37 45 转换为单个 int32 数字 如下所示 10223745 这可以工作 gt gt gt int join map str 10 22 37 45 10223745 基本上你使用map s
  • Series.sort() 和 Series.order() 有什么区别?

    s pd Series nr randint 0 10 5 index nr randint 0 10 5 s Output 1 3 7 6 2 0 9 7 1 6 order 按值排序并返回一个新系列 s order Output 2 0
  • Python Tkinter 模块不显示输出

    我正在尝试学习 Python 并尝试使用 Python 中的 GUI 并遇到了这个 Tkinter 模块 我的代码运行 但运行时窗口没有出现 我的代码如下 from Tkinter import to create a root windo
  • 在Python上获取字典的前x个元素

    我是Python的新手 所以我尝试用Python获取字典的前50个元素 我有一本字典 它按值降序排列 k 0 l 0 for k in len dict d l 1 if l lt 51 print dict 举个小例子 dict d m
  • python 中的 <> 运算符有什么作用?

    我刚刚遇到这个here http www feedparser org feedparser py 总是这样使用 if string1 find string2 lt gt 1 pass 什么是 lt gt 运算符这样做 为什么不使用通常的
  • Plotly:如何检查基本图形结构(版本 4)

    对于旧版本的plotly 例如在 Jupyterlab 中 您可以简单地运行figure像这样检查你的图形的基础知识 Ouput data marker color red size 10 symbol 104 mode markers l
  • 查找 Pandas DF 行中的最短日期并创建新列

    我有一个包含多个日期的表 有些日期将为 NaN 我需要找到最旧的日期 所以一行可能有 DATE MODIFIED WITHDRAWN DATE SOLD DATE STATUS DATE 等 因此 对于每一行 一个或多个字段中都会有一个日期
  • pandas 相当于 np.where

    np where具有向量化 if else 的语义 类似于 Apache Spark 的when otherwise数据帧方法 我知道我可以使用np where on pandas Series but pandas通常定义自己的 API
  • 如何查找或安装适用于 Python 的主题 tkinter ttk

    过去 3 个月我一直在制作一个机器人 仅用代码就可以完美运行 现在我的下一个目标是为它制作一个 GUI 但是我发现了一些障碍 主要的一个是能够看起来不像一个 30 年前的程序 我使用的是 Windows 7 我仅使用 Python 3 3
  • 使用另一个数据帧在数据帧中创建子列

    我对 python 和 pandas 很陌生 在这里 我有一个以下数据框 did features offset word JAPE feature manual feature 0 200 0 aa 200 200 0 200 11 bf
  • 为什么 __dict__ 和 __weakref__ 类从未在 Python 中重新定义?

    类创建似乎从来没有re 定义 dict and weakref class属性 即 如果它们已经存在于超类的字典中 则它们不会添加到其子类的字典中 但始终re 定义 doc and module class属性 为什么 gt gt gt c
  • Python bug - 或者我的愚蠢 - 扫描字符串文字时 EOL

    我看不出以下两行之间有显着差异 然而第一个解析 而后者则不解析 In 5 n Axis of Awesome In 6 n Axis of Awesome File
  • 检测是否从psycopg2游标获取?

    假设我执行以下命令 insert into hello username values me 我跑起来就像 cursor fetchall 我收到以下错误 psycopg2 ProgrammingError no results to fe
  • 使用 PIL 在 Tkinter 中显示动画 GIF

    我正在尝试制作一个程序来使用 Tkinter 显示动画 GIF 这是我最初使用的代码 from future import division Just because division doesn t work right in 2 7 4
  • 如何将带有参数的Python装饰器实现为类?

    我正在尝试实现一个接受一些参数的装饰器 通常带有参数的装饰器被实现为双重嵌套闭包 如下所示 def mydecorator param1 param2 do something with params def wrapper fn def
  • python从二进制文件中读取16字节长的双精度值

    我找到了蟒蛇struct unpack 读取其他程序生成的二进制数据非常方便 问题 如何阅读16 字节长双精度数出二进制文件 以下 C 代码将 1 01 写入二进制文件三次 分别使用 4 字节浮点型 8 字节双精度型和 16 字节长双精度型
  • 用于插入或替换 URL 参数的 Django 模板标签

    有人知道 Django 模板标签可以获取当前路径和查询字符串并插入或替换查询字符串值吗 例如向 some custom path q how now brown cow page 3 filter person 发出请求 电话 urlpar

随机推荐

  • 如何在Python中拆分数学表达式的字符串?

    我制作了一个在 python 中将中缀转换为后缀的程序 问题是当我介绍论点时 如果我引入这样的内容 这将是一个字符串 73 34 72 33 3 56 95 28 它会用 split 分割它 程序将正常工作 但我希望用户能够介绍这样的内容
  • iOS 6 社交框架无法设置或没有警报

    我正在尝试在 iOS6 中实现新的社交框架 并让它正常工作 除了两个奇怪的问题 如果我启用了我感兴趣的服务 例如 FaceBook 那么它就可以正常工作 但是 如果从设置面板 假设是 Facebook 为了保持一致 中删除了帐户 那么我会在
  • 如何在 MATLAB 的 bar3 图中隐藏零值

    我有一个 2 D 直方图 该图是 3D 的 几个并排绘制的直方图 是用 bar3plot 命令生成的 然而 所有零值在 x y 平面上都显示为平面正方形 有没有办法阻止 MATLAB 显示这些值 我已经尝试用 NaN 替换所有零 但它并没有
  • 如何在 OpenUrl 卡操作中回复消息?

    我正在发送带有 openURL 的 cardAction 用户应该单击该按钮 按照所述 URL 中的说明进行操作 然后报告数据 我想要显示一条消息when用户单击按钮 同时打开 URL 根据我的测试 我只能选择 ImBack 或 OpenU
  • 如何在 Google Cloud BigQuery 中小写整个列数据

    我正在尝试找到一种 快速 方法来小写 Google Cloud BigQuery 内表列中的所有数据 字符串 在构建脚本之前 我正在寻找更短的方法 例如查询 如何查询 BigQuery 以小写整个列 您可以使用UPDATE陈述 UPDATE
  • MySQL UPDATE 和 SELECT 一次性完成

    我有一个要执行的 MySQL 任务表 每一行都有一个任务的参数 有许多工作应用程序 可能在不同的机器上 循环执行任务 这些应用程序使用 MySQL 的本机 C API 访问数据库 为了拥有一项任务 应用程序会执行以下操作 生成一个全局唯一的
  • 类型参数命名准则是什么?

    我注意到了 也看到了必备 C 3 0 https rads stackoverflow com amzn click com 0321533925书上 参数通常定义为T or TEntity 例如 public class Stack
  • !: Angular 中的(爆炸冒号)表示法

    I found 中使用的符号Angular 弃用文档 https angular io guide deprecations dependency on a reflect metadata polyfill in jit mode Inp
  • TextField 包含日语字符时缺少字体样式

    将字符串传递给视图 Case 1 English alphabet is no problem test deck ABCDE Case 2 Font style is missing test deck Case 3 Font style
  • 用于比较 Windows 二进制文件的工具?

    我们的 QA 团队希望根据 EXE 和 DLL 在构建之间实际发生的变化来集中测试 我们有一个很好的 svn 更改报告 但是源代码和更改的二进制文件之间的关系并不总是很明显 我们正在比较的构建始终是完全干净的构建 因此我们不能使用文件系统时
  • Python 基础知识 为什么 set() 有效但 {} 失败? [复制]

    这个问题在这里已经有答案了 s this that this 为什么set s 工作但是 s 失败了 TypeError unhashable type list 这是因为它们意味着不同的东西 set s 迭代s创建一个集合 而文字语法 s
  • 如何定期使用 PAPI 进行性能测量

    我想使用 C 中的 PAPI api 分析我的应用程序的系统性能 一般结构是 初始化PAPI 初始化感兴趣的计数器 启动计数器 运行应用程序的主要逻辑 结束计数器并读取值 我想定期读取计数器 例如每 1 秒一次 而不是在应用程序结束时读取最
  • OData 筛选器和 Guid 字段的问题

    我正在尝试使用 OData 来运行一些代码 下面的代码似乎不起作用 ds是 OpenDataServiceProxy 适配器类型 ID是 Guid 的字符串表示形式 适配器名称是一个字符串名称 ds query DataAdapters f
  • 如何解决 Node.js 错误:找不到模块?

    当我启动一个 dockerized Node js 测试应用程序时 sudo docker compose up 我收到以下错误 Starting testapp web 1 done Attaching to testapp web 1
  • AWS S3分段上传在不指定源文件时工作

    我已经构建了一个 ajax 上传器 可以将文件直接上传到 S3 它运行完美 但我感到困惑的是它实际上是如何工作的 我对文档中的显示方式采取了不同的方法 不是指定 sourceFile 而是在元数据中指定文件名 没有发送文件位置 我在用着AW
  • Laravel 和 LocalStack 的最大执行时间

    我正在尝试使用 Localstack 来模拟 s3 实例 以便我可以从表单上传图像 这是我的 docker compose localstack image localstack localstack latest container na
  • 如何使用 Ruby/Rails 从网站获取内容?

    我想使用 ruby rails 从网站复制一些特定内容 我需要的内容位于一个 marquee html 标签内 由 div 分隔 我如何使用 ruby 访问此内容 更准确地说 我想使用某种 ruby gui 最好是鞋子 我该怎么做 这并不是
  • 如何定义依赖于Provider的GoRouter?

    我正在将 GoRouter 集成到我的 Flutter 应用程序中 我已经在使用 Riverpod 我有一个isAuthorizedProvider定义如下 final isAuthorizedProvider Provider
  • 使用 UIPageViewController 在多个视图控制器之间滑动

    我的 UIPageViewController 根本不工作 我想做的是在 UIPageViewController 内切换 2 个视图控制器 我已经遵循这里的指南但失败了 将 UIPageViewController 与 swift 和多个
  • Matplotlib - 堆积条形图和工具提示

    This code https github com joferkington mpldatacursor issues 47当鼠标悬停在条形图上时返回工具提示 我想修改堆叠条形图的代码 并在鼠标悬停在条形图的部分时获取该部分的特定工具提示