如何从 matplotlib 将时间控制面板添加到 FuncAnimation

2023-12-22

我目前正在使用matplotlib.animation.FuncAnimation() http://matplotlib.org/api/animation_api.html#matplotlib.animation.FuncAnimation在人物上显示我的作品的动画。

它工作得很好,我理解我正在使用的参数(间隔,时间范围,...)但是,我想知道是否有一种方法来实现(可能直接到图)包含动画的面板,滚动条或其他任何东西,这使我能够:

  • 快速向前或向后移动到感兴趣的时区。
  • 显示我处于动画的哪个点(10%,然后 20%,...)。

基本上,是一种在图形上控制 python 动画的方法,就像我将其控制为视频播放器播放的视频文件一样?

如果需要,该动画的代码如下所示:

    def init():
        im1.set_data(XYslice[0, :, :])
        im2.set_data(XZslice[0, Nplans/2:, :])
        return([im1, im2])

    def animate(t):
       im1.set_data(XYslice[t, :, :])
       im2.set_data(XZslice[t, Nplans/2:, :])
       return [im1, im2]

    anim = animation.FuncAnimation(fig, animate, np.arange(Ntime), interval=200,
                                 blit=True, init_func=init, repeat=True)

你说的是GUI。最简单的例子使用 matplotlib 内置widgets http://matplotlib.org/examples/widgets/slider_demo.html:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.mlab import bivariate_normal
from matplotlib.widgets import Slider, Button

#Setup figure and data
fig, ax = plt.subplots()
plt.subplots_adjust(bottom=0.25)
delta = 0.5
t = np.arange(0.0, 100.0, 0.1)
x = np.arange(-3.0, 4.001, delta)
y = np.arange(-4.0, 3.001, delta)
X, Y = np.meshgrid(x, y)
Z1 = bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
Z = (Z1 - Z2) * 5.
cmap = plt.cm.rainbow
im = ax.pcolormesh(X, Y, Z, cmap=cmap)
fig.colorbar(im)
axcolor = 'lightgoldenrodyellow'
axtime = plt.axes([0.25, 0.1, 0.65, 0.03], axisbg=axcolor)
stime = Slider(axtime, 'Time', 0.0, 100.0, valinit=50.0)

#Routines to reset and update sliding bar
def reset(event):
    stime.reset()

def update(val):
    time = stime.val/10.
    Z = (Z1 - Z2) * time
    im.set_array(Z.ravel())
    fig.canvas.draw()

#Bind sliding bar and reset button  
stime.on_changed(update)
resetax = plt.axes([0.8, 0.025, 0.1, 0.04])
button = Button(resetax, 'Reset', color=axcolor, hovercolor='0.975')
button.on_clicked(reset)

plt.show()

这应该是一个开始。如果你想让它看起来更好(并添加更多功能),那么你需要使用 GUI 框架,例如wxpython, 查看this http://wiki.wxpython.org/MatplotlibFourierDemo例子。

更符合您的数据结构的示例如下:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.mlab import bivariate_normal
from matplotlib.widgets import Slider, Button

#Setup figure and data
fig, ax = plt.subplots()
plt.subplots_adjust(bottom=0.25)
delta = 0.5
t = np.linspace(0.0, 100.0, 256)
x = np.linspace(-4.0, 4.001, 512)
y = np.linspace(-4.0, 4.001, 512)
X, Y = np.meshgrid(x, y)
Z1 = bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
XZslice = np.zeros((256,512,512))
for i in range(t.shape[0]):
    XZslice[i,:,:] = (Z1 - Z2) * t[i]/10.
cmap = plt.cm.rainbow
im = ax.pcolormesh(XZslice[128,:,:], cmap=cmap)
fig.colorbar(im)
axcolor = 'lightgoldenrodyellow'
axtime = plt.axes([0.25, 0.1, 0.65, 0.03], axisbg=axcolor)
stime = Slider(axtime, 'Time', 0.0, 100.0, valinit=50.0)

#Routines to reset and update sliding bar
def reset(event):
    stime.reset()

def update(val):
    time = int(stime.val/100.* 256)
    im.set_array(XZslice[time,:,:].ravel())
    fig.canvas.draw()

#Bind sliding bar and reset button  
stime.on_changed(update)
resetax = plt.axes([0.8, 0.025, 0.1, 0.04])
button = Button(resetax, 'Reset', color=axcolor, hovercolor='0.975')
button.on_clicked(reset)

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

如何从 matplotlib 将时间控制面板添加到 FuncAnimation 的相关文章

随机推荐

  • 如何在单击外部时关闭没有背景的垫对话框?

    我怎样才能关闭这个对话框堆栈闪电战示例 https stackblitz com edit angular tkg6v6 最小的 可重现的示例 通过点击外部 如果我删除该属性 这效果很好hasBackdrop false gt 工作 Sta
  • 如何找到*.appref-ms的目标*.exe文件

    我必须备份从文件运行的程序 appref ms http dl dropbox com u 40690073 GitHub appref ms当我打开文件时GitHub appref ms http dl dropbox com u 406
  • 未定义的属性:PDO::$connect_error

    我正在尝试使用 dbc gt connect error检查尝试连接到我的数据库时是否发生任何错误 我总是收到一个错误页面 上面写着 注意 未定义的属性 PDO connect error in 第 7 行 C xampp htdocs a
  • 无法使用 Eclipse 模拟器将文件推送到 SD 卡 [重复]

    这个问题在这里已经有答案了 我正在尝试将 3GP 文件推送到 Eclipse 模拟器 我打开模拟器并在 Eclipse 中转到 DDMS 透视图 在文件资源管理器中 我打开 mnt 并突出显示 sdcard 我单击 将文件推送到设备上 按钮
  • Powershell获取CPU百分比

    关于如何在 Powershell 中获取进程的 CPU 百分比似乎没有任何简单的解释 我用谷歌搜索并在这里搜索 但没有看到任何明确的信息 有人可以用通俗的语言解释一下如何获取进程的 CPU 百分比吗 谢谢 这里有一些可以帮助您开始的东西 i
  • TSQL 从日期时间中剥离日期

    最好的脱毛方法是什么date从 DATETIME 开始 所以仅time还剩下来做比较吗 我知道我可以执行以下操作 CONVERT DATETIME CONVERT VARCHAR 8 GETDATE 8 但这涉及到转换和字符 如果我想检查某
  • android 使用 Renderscript 实现模糊效果崩溃导致 A/libc:致命信号 7 (SIGBUS),代码 2,故障地址 0x9e6fa000 in tid 482 (AsyncTask #1)

    我使用模糊效果 同时应用于从资源加载的位图 它按预期工作 同时使用通用图像加载器下载图像并应用于位图 它会导致 A libc 致命信号 7 SIGBUS 代码 2 tid 31955 中的故障地址 0x9d56e000 AsyncTask
  • 在 Laravel 4 中使用命名空间

    我是 Laravel 的新手 并且通常使用 PHP 命名空间 在我决定制作一个名为 File 的模型之前 我没有遇到任何问题 我将如何正确地进行命名空间以便我可以使用我的文件模型类 这些文件是app controllers FilesCon
  • 反向 mysql_real_escape_string

    我有一段很大的数据 可能包含引号和双引号 我在用着mysql real escape string 安全存放 当我把它拿出来查看时 所有引号都被转义了 我尝试使用str replace去掉所有的引号 但这变成了 r n s into rn
  • 如何重用带有参数的 LINQ Select 表达式

    我编写了一个 LINQ 查询 并为 Select 子句创建了一个表达式来重用它 我的查询看起来像这样 DataContext Single Select SearchSelector ToList 其中搜索选择器定义为 private Ex
  • 我们可以在没有 main() 方法的情况下执行 java 程序吗? [复制]

    这个问题在这里已经有答案了 据我所知 如果没有 main 方法 我们就无法执行 因为当你运行 java 程序时 java 虚拟机查找 main 方法 如果 JVM 找不到 main 方法 它将显示运行时错误 Exception in thr
  • JavaScript 数组是 NaN? AngularJS ng模型

    我想看看 ngModel 的价值是什么 directive myDir function return require ngModel link function scope elm attr ngModel if ngModel retu
  • @ControllerAdvice 异常处理程序方法未被调用

    我正在为 Spring MVC 中的异常处理开发示例演示应用程序 我正在尝试Exception Handling With ControllerAdvice 我按照中描述的步骤操作this http www baeldung com 201
  • .change() 和 .on("change") 之间有区别吗? [复制]

    这个问题在这里已经有答案了 之间有什么区别 selector change function and selector on change function 如果有的话 在大多数情况下我应该使用哪一个 内部没啥区别change函数会使用 o
  • 如何在导出的pdf中显示印地语字体?

    我正在尝试显示印地语字体在使用生成的pdf文件中iReport 我在中添加了印地语 ttf 字体iReport对于相同的 iReport工具正在正确显示印地语字体iReport查看器 但是当我将其导出到 pdf 文件时 我没有在 pdf 文
  • 确定文件是否为空的最佳方法(php)?

    我在模板中包含了一个 custom css 文件 以允许网站所有者添加自己的 CSS 规则 但是 当我发送文件时 它是空的 如果他们没有向其中添加任何规则 则加载它是没有意义的 确定其是否为空的最佳方法是什么 if 0 filesize f
  • Android 中的对话框被关闭或取消有什么区别?

    正如标题所说 Android 中对话框被关闭或取消有什么区别 通常 当对话框的工作完成并从屏幕上删除时 对话框就会被关闭 当用户想要退出对话框并按 后退 按钮时 对话框将被取消 例如 屏幕上有一个标准的是 否对话框 如果用户单击 否 则对话
  • 无法在react router dom中使用Link传递道具

    using this to pass props over Watch page but can t get any value 我是新手 所以可能会出现愚蠢的错误或信息不足 请让我知道任何额外信息 如果您正在使用react router
  • ostrstream 将常量字符串解释为指针

    我在清理旧 C C 应用程序的调试宏时遇到了这个问题 我们有一个继承自的 Tracer 类ostrstream 我知道自 C 98 以来它已被弃用 但这个应用程序是在 1998 年编写的 我们这样使用它 Tracer lt lt some
  • 如何从 matplotlib 将时间控制面板添加到 FuncAnimation

    我目前正在使用matplotlib animation FuncAnimation http matplotlib org api animation api html matplotlib animation FuncAnimation在