使用按钮更新 Matplotlib 中的注释

2024-04-16

我正在修改 Matplotlib 文档中的按钮示例,以在图中添加文本注释。我的问题是,我无法找到每次按下按钮时更新注释的正确方法,因为注释重叠。我尝试了remove()方法,但不起作用。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Button

freqs = np.arange(2, 20, 3)

fig, ax = plt.subplots()
plt.subplots_adjust(bottom=0.2)
t = np.arange(0.0, 1.0, 0.001)
s = np.sin(2*np.pi*freqs[0]*t)
l, = plt.plot(t, s, lw=2)


class Index(object):
    ind = 0

    def next(self, event):
        self.ind += 1
        i = self.ind % len(freqs)
        ydata = np.sin(2*np.pi*freqs[i]*t)
        l.set_ydata(ydata)
        plt.annotate("lalala", (0, 0))
        plt.draw()

    def prev(self, event):
        self.ind -= 1
        i = self.ind % len(freqs)
        ydata = np.sin(2*np.pi*freqs[i]*t)
        l.set_ydata(ydata)
        plt.annotate("lelele", (0.50, 0))
        plt.draw()

callback = Index()
axprev = plt.axes([0.7, 0.05, 0.1, 0.075])
axnext = plt.axes([0.81, 0.05, 0.1, 0.075])
bnext = Button(axnext, 'Next')
bnext.on_clicked(callback.next)
bprev = Button(axprev, 'Previous')
bprev.on_clicked(callback.prev)

plt.show()

任何帮助,将不胜感激。

源代码:http://matplotlib.org/examples/widgets/buttons.html http://matplotlib.org/examples/widgets/buttons.html


不幸的是,您想要实现的目标并不完全清楚。

您当然可以选择更新回调类中的注释:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Button

freqs = np.arange(2, 20, 3)

fig, ax = plt.subplots()
plt.subplots_adjust(bottom=0.2)
t = np.arange(0.0, 1.0, 0.001)
s = np.sin(2*np.pi*freqs[0]*t)
l, = plt.plot(t, s, lw=2)
ann = ax.annotate("", (0, 0))

class Index(object):
    ind = 0

    def next(self, event):
        self.ind += 1
        i = self.ind % len(freqs)
        ydata = np.sin(2*np.pi*freqs[i]*t)
        l.set_ydata(ydata)
        ann.set_text("next clicked")
        ann.set_position((0.6,0.5))
        plt.draw()

    def prev(self, event):
        self.ind -= 1
        i = self.ind % len(freqs)
        ydata = np.sin(2*np.pi*freqs[i]*t)
        l.set_ydata(ydata)
        ann.set_text("previous clicked")
        ann.set_position((0.3,0.5))
        plt.draw()

callback = Index()
axprev = plt.axes([0.7, 0.05, 0.1, 0.075])
axnext = plt.axes([0.81, 0.05, 0.1, 0.075])
bnext = Button(axnext, 'Next')
bnext.on_clicked(callback.next)
bprev = Button(axprev, 'Previous')
bprev.on_clicked(callback.prev)

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

使用按钮更新 Matplotlib 中的注释 的相关文章

随机推荐

  • 用 Java JNA 编写的关键监听器。防止多次回调

    我使用以下代码来监听全局按键事件 Win32HookManager java import com sun jna Pointer import com sun jna platform win32 Kernel32 import com
  • 使用地图计算文本文件中出现的次数

    下面的代码将计算每个字符的出现次数 如果我在文本文件中有 abc 输出将是 a 1 b 1 c 1 我在许多网站上读到 for 循环将花费大量时间 最好使用哈希映射来实现相同的效果 你们中的任何人都可以帮我如何转换这个实现哈希映射的程序吗
  • 对c#的async/await控制流程感到困惑

    我正在学习 async await 并且对 wait 的解释感到困惑MSDN https learn microsoft com en us dotnet csharp language reference keywords await w
  • SSH 连接超时

    我正在尝试使用以下命令建立 SSH 连接golang org x crypto ssh我有点惊讶我似乎不知道如何超时NewSession函数 实际上我没有看到任何超时的方法 当我尝试连接到有问题的服务器时 它会挂起很长时间 我写了一些可以使
  • 您没有浏览服务器的权限?

    我将 kcfinder 与 ckeditor 一起使用 改变的同时disabled to false在 kcfinder 的配置文件中没有问题 但是用以下命令覆盖它 SESSION KCFINDER array disabled gt fa
  • EF Core 中的 AddRange 和 AddRangeAsync 有什么区别

    我正在使用 EF Core 插入条目 我注意到当我调试这行代码时context MyEntityDbSet AddRangeAsync records 加载需要一秒钟 而不是context MyEntityDbset AddRange re
  • 列族 ID 不匹配(发现为 cebcc380-72d4-11e7-9a6b-bd620b945799;预期为 c05d6970-72d4-11e7-9a6b-bd620b945799)

    我该如何解决这个错误列族 ID 不匹配 发现为 cebcc380 72d4 11e7 9a6b bd620b945799 预期为 c05d6970 72d4 11e7 9a6b bd620b945799 Caused by java uti
  • 按多个单词的主题标签拆分术语

    我正在尝试拆分包含多个单词的主题标签的术语 例如 I am great 或 awesome dayofmylife 那么我正在寻找的输出是 I am great awesome day of my life 我所能实现的就是 gt gt g
  • 如何使用java访问SVN中的文件

    我需要你的帮助 我想使用 java 代码从 SVN 打开一个文件 任何人都可以告诉我访问文件的流程 或者任何人都可以向我发送该文件的示例代码 任何人都可以向我发送使用java通过HTML访问svn的示例代码吗 你需要看看SVNKIT Jav
  • CancellationToken 不会在 Azure Functions 中触发

    我有这个简单的 Azure 函数 public static class MyCounter public static int timerRound 0 public static bool isFirst true FunctionNa
  • 如何将我的 app.yaml 迁移到 2.7?

    我正在将我的 gae 应用程序迁移到 python 2 7 这是我的新 app yaml application webfaze version main runtime python27 api version 1 threadsafe
  • 如何修复 ReactforwardRef(Menu) Material UI?

    我创建了非常简单的自定义组件MuiMenu and MuiMenuItem 但是当我尝试显示这些组件时 我看到一个错误 如下所示 Function components cannot be given refs Attempts to ac
  • 如何对歌曲中的专辑进行排序?

    所以我的问题是 当我尝试对专辑进行排序时 专辑标题和专辑艺术是错误的 我尝试对专辑 ID 进行排序 但这并不能解决问题 因为专辑 ID 显然与对艺术进行排序无关 当我忽略排序时 一切都是正确的 但是当我尝试对它们进行排序时 专辑名称与专辑封
  • 更改表的列名后,所有单元和功能测试均出错

    我重命名了表的 3 列 突然我的所有单元和功能测试都抛出了相同的错误 即它们找不到具有旧列名称的表 即使对与我修改的表无关的模型的测试也会抛出相同的错误 Example 54 Error test should show user User
  • 即时编译与提前编译相比有何优点?

    我最近一直在思考这个问题 在我看来 最大的优势是JIT编译或多或少应该归因于中间格式 而抖动本身并不是生成代码的好方法 那么主要就是这些pro JIT我经常听到的编译参数 即时编译可实现更大的可移植性 这不是中间格式的原因吗 我的意思是 一
  • 使用 CSS/jQuery 的响应式字体大小

    我想在 div 内创建响应文本 I tried jquery 文本填充 https github com jquery textfill jquery textfill and FlowType http simplefocus com f
  • 有没有办法检测手机和手持设备上的3G和2G连接速度?

    有没有办法检测手机和手持设备上的 3G 和 2G 连接 就像如果我想在用户使用 3G 时提供高端网站 如果用户使用 2G 则提供高度优化的版本 在 Android 2 2 中 有一个 JS 对象可以实现这一点 您可以根据连接类型编写一个供
  • 如何在 PHP 中将字符串的第一个字符变为小写?

    我无法使用斯特洛尔 https www php net manual en function strtoupper php因为它会影响所有角色 我应该使用某种正则表达式吗 我收到一个字符串 它是产品代码 我想在不同的地方使用此产品代码作为搜
  • 寻找最接近的斐波那契数列

    我正在尝试解决一个更大的问题 并且我认为该程序的重 要部分花费在低效的计算上 我需要计算给定数字 N 的区间 P Q 其中 P 是 到 N 的最小斐波那契数 目前 我正在使用地图来记录斐波那契数的值 查询通常涉及搜索最多 N 的所有斐波那契
  • 使用按钮更新 Matplotlib 中的注释

    我正在修改 Matplotlib 文档中的按钮示例 以在图中添加文本注释 我的问题是 我无法找到每次按下按钮时更新注释的正确方法 因为注释重叠 我尝试了remove 方法 但不起作用 import numpy as np import ma