问题标签 [matplotlib-animation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
151 浏览

python - 使用 FuncAnimation 创建 CSV 数据的实时图

我一直在尝试绘制 CSV 流(已经几周了——因为我对 Python 和编程的理解有限)。

以前,我在这里问过一个问题,幸好我收到了答案,但是,我意识到使用 matplotlib(for 循环)会产生非常慢的 fps。这是当前代码:

它有效,但非常慢。我正在考虑FuncAnimation/ArtistAnimation改用,但我不确定如何将它与流 csv 结合使用。我想绘制每一行(每行 1 个绘图)并动画到另一行。

如何将“for loop plotting”修改为 FuncAnimation 或 ArtistAnimation?谢谢你。

0 投票
1 回答
193 浏览

python - 使用 Tkinter Scale 小部件刷新动画图

我正在做一个交互式伪驻波演示,但我陷入了僵局。从本质上讲,这个项目的目标是重新创建 Melde 实验的一个变体,其中一根弦由一端的振荡器驱动,另一端连接到一个 90 度角的滑轮。在这个实验的物理版本中,将铅弹丸添加到悬挂在该滑轮上的杯子中,增加弦的张力直到形成驻波。

这个项目并不是真正的驻波模拟,因为我没有用必要的边界条件对波动方程进行数值求解;相反,我正在生成一个入射正弦波和一个“反射”正弦波。在这里,可以调整入射波,使两个波之间的波矢量匹配,从而产生驻波。我的目标是能够通过 Tkinter 的刻度小部件调整落入杯中的铅弹丸的数量来调整这一波。换句话说,我希望能够调整下面屏幕截图中显示的滑块并相应地更新(动画)波。

在此处输入图像描述

我在这个论坛上发现了一些相关的问题,但它们似乎都与使用滑块的移动更新静止图或为滑块本身设置动画有关。就我而言,波形图已经动画化了——已经及时移动了,我想在调整滑块时刷新动画本身。我知道我需要命令缩放小部件来调用函数,但我不确定如何在保留代码中已经存在的动画函数的同时执行此操作。最终,我希望能够使用比例小部件控制参数 N(朝向下面代码的顶部),并相应地更新动画图。

任何建议都非常感谢!我对使用 Tkinter 很陌生,所以我可能只是遗漏了一些明显的东西。

0 投票
1 回答
66 浏览

python-3.x - 无法在python中保存动画

这不会保存动画。然而,

确实保存了动画,但渲染不是很清晰而且很模糊。我该如何改变呢?

其他要点是:

  1. 如何将所有散点更改为单一颜色?例如深灰色或黑色
  2. 如何仅将食指更改为不同的颜色?例如食指颜色红色

最良好的祝愿,

PS:附上动画在此处输入图像描述

0 投票
0 回答
47 浏览

python - 将数据转换为散点图等颜色

使用 matplotlibs scatter 函数时,用颜色显示数据非常简洁:

这将自动映射data[2]到传达信息的色谱。在 scatter 函数之外有没有很好的方法来做到这一点?我问这个的原因之一是因为我稍后会尝试更改颜色。这里有一个关于它的问题,但我意识到这将使用旧数组的规范化。

假设我想更改映射为颜色的数组:

这将使几乎所有点都成为最亮的颜色,而不是选择合适的新颜色范围。有没有办法绕过这个?或者,我可以很好地从中制作一个颜色数组,然后将其传递给scatter.set_color()

0 投票
1 回答
282 浏览

python - matplotlib 动画适用于 Windows 和 Linux,但不适用于 Mac OS

我在 Mac OS 上的 Python 脚本中遇到 matplotlib 动画问题。

完整的脚本在这里(有点长),动画部分在这里:

我遇到的问题是动画在 Windows 和 Linux 上运行良好,但在 Mac OS 上动画不显示。这是一个视频演示

在所有三个系统(Windows、Linux 和 Mac OS)上,我只安装了运行脚本matplotlibnumpy包,除此之外我没有安装任何东西,所以所有三个(应该)都有相同的包。以防万一,以下是他们环境的摘要:

我尝试过其他简单的绘图动画示例(例如matplotlib 文档中的那些),它们在 Mac OS 上运行良好,所以我猜我的特定脚本有问题,但事实上这个相同的脚本适用于Windows 和 Linux(尽管出于某种原因具有不同的动画速度)让我很困惑。

我还在其他 3 台安装了不同 Mac OS 和 Python 版本的 Mac 上测试了我的脚本,但都是一样的。

您是否看到我的脚本在 Mac OS 上不显示动画的任何原因?

0 投票
0 回答
98 浏览

matplotlib - 如何在不使用 plt.show() 和 matplotlib.animation.FuncAnimation 结尾的情况下使用 plt.savefig()

例如,此代码工作正常,仅当 plt.show() 出现在末尾时才保存 plt。否则它只是运行而不保存任何输出。

PS - 我尝试使用ani.save(writer="ffmpeg",dpi=200)它,它工作正常,但后来我使用 ffmpeg 命令将图像序列转换为动画,它显示无效的 PNG 签名。

我也是这个领域的新手,所以如果我没有遵循任何适当的方法,我会很高兴。

提前致谢。

0 投票
1 回答
567 浏览

python - 在 Python 中使用 matplotlib 对时间相关的 3D 函数进行动画处理

希望可以有人帮帮我。我的目标是为函数 U(x,z,t) 制作动画,特别是 3D 函数 U(x,z) 的时间演化。首先,我编写了一些离散时间步长的代码,并将每个“快照”保存在数组 U[t] 中,其中 t 是 {0,1,...,Nt} 中的整数,用于 Nt 个时间步长。U[0] 是初始函数并给出。我想指出 U[t] (t in {0,1,...,Nt} 都是包含数字的矩阵,并且已经适合绘制。我现在想要为绘图设置动画,以便:

  1. 窗口中显示的第一幅图像是 U[0],即带有适当标签的初始函数。
  2. 然后窗口刷新并显示带有适当标签的U 1 。
  3. 然后它重复步骤 (2) 直到时间步长 Nt。

我的第一种方法是仅使用“for 循环”。不幸的是,我没有创建一个令人耳目一新的图像,而是创建了一系列不同的图形。代码是:

现在我尝试在线搜索并找到了许多使用 matplotlib.animation 和 FuncAnimation 或只是 Animation 的不同示例。问题是我不明白如何使这些例子适应我的案例。在这种情况下有人可以帮助我吗?

更新:对于函数也可以是变量的情况。我写了以下代码:

可以使用不同的函数调用此代码,以方便您在需要可视化更多函数时进行处理。

结果是: 函数 P 的 Gif 示例

0 投票
0 回答
191 浏览

python - FuncAnimate 中的 Blit 行为 - 想要保留以前的数据

我正在尝试使用 matplotlib->FuncAnimate 函数为图形设置动画。但是,我无法理解 Blit 的工作原理。对于每一帧,我只想在旧数据点之上绘制新数据点。它说使用 Blit 它应该只自动更新更改的值。因此,如果我打开它(blit=True),以前的数据点应该保留在我的图中。但这种情况并非如此。以前的数据被删除,图形从头开始重绘。

在文档中,它说我必须返回“iterable_of_artists”,算法将知道哪些数据已更改。我只想传递新数据并在旧数据之上绘制。顺便说一句,什么是“iterable_of_artists”,它只是一个可以绘制的对象列表吗?如果有人能指出我的定义,我将不胜感激。

无论如何,我已经研究了几个显示奇怪行为的基本示例。在第一个示例中,我将 Blit=True 设置为使用 animate 函数仅绘制新数据。这在理论上应该在旧数据之上绘制,但事实并非如此,只绘制新数据。

我能够通过欺骗 FuncAnimate 方法来实现我的目标。我可以使用斧头并在每一帧中绘制新数据。如果我这样做,旧数据将保留,仅绘制新数据。但是,我可以使用 Blit=True 或 Blit=False 来做到这一点,它没有任何效果。因此,我对 Blit 的工作原理以及仅绘制新数据而无需创建包含所有要绘制的数据的列表的正确方法感到非常困惑。如果我有很长的数据点集,则传递一个大列表将在内存中创建一个大变量。这是我的解决方法,但我不确定这是否是正确的方法,或者是否有更好的方法使用 Blit=True 并重新绘制新数据。

0 投票
1 回答
123 浏览

python - 为什么在尝试使用 Line3D 对象时 matplotlib 3d 动画不起作用

我有这个代码:

它在使用注释data = ax.plot(segment[0], segment[1], segment[2], color = 'b')行而不是以下两个行时起作用,(但我正在努力做到这一点,以便在顶部绘制新行时不会绘制之前的行)。

如果您按原样使用代码,动画看起来很奇怪。

我有一个理论line_2d_to_3d没有按预期工作,但我不确定。

0 投票
1 回答
92 浏览

python - Matplotlib 动画

我正在尝试创建一个 ABC 徽标并使用 matplotlib 对其进行动画处理,我通过更改增量索引获得了所有阶段我能够获得所有 x 和 y 坐标但我无法从一个阶段动画到另一个阶段。下面是我正在尝试做的事情的链接。 https://www.youtube.com/watch?v=sL0FhqGtV4U&ab_channel=AustralianTelevisionArchive