- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我对此给出了答案thread ,谈论 matplotlib 上的褪色点。我对 ImportanceOfBeingErnest 的回答感到好奇。所以我尝试尝试他的代码。
首先,这是我的代码。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation
from matplotlib.colors import LinearSegmentedColormap
def get_new_vals():
x = 0
y = 0
while True:
if x >= .9:
x = 0
y = 0
x += .1
y += .1
yield x, y
def update(t, x_vals, y_vals, intensity, scatter, gen):
# Get intermediate points
new_xvals, new_yvals = gen.next()
x_vals.extend([new_xvals])
y_vals.extend([new_yvals])
# Put new values in your plot
scatter.set_offsets(np.c_[x_vals, y_vals])
# Calculate new color values
for index in range(len(intensity)):
if intensity[index] < .1:
intensity[index] = 0
intensity[index] *= .6
intensity.extend(1 for _ in xrange(len([new_xvals])))
intens_dup = np.array(intensity)
"""
intensity = np.concatenate((np.array(intensity) * .6, np.ones(len(new_xvals))))
"""
scatter.set_array(intens_dup)
# Set title
axis.set_title('Time: %0.3f' % t)
def anim_random_points(fig, axis):
x_vals = []
y_vals = []
intensity = []
iterations = 100
colors = [ [0, 0, 1, 0], [0, 0, 1, 0.5], [0, 0.2, 0.4, 1] ]
cmap = LinearSegmentedColormap.from_list("", colors)
scatter = axis.scatter(x_vals, y_vals, c=[], cmap=cmap, vmin=0, vmax=1)
gen_values = get_new_vals()
ani = matplotlib.animation.FuncAnimation(fig, update, frames=iterations,
interval=50, fargs=(x_vals, y_vals, intensity, scatter, gen_values),
repeat=False)
# Position 1 for plt.show()
plt.show()
if __name__ == '__main__':
fig, axis = plt.subplots()
axis.set_xlabel('X Axis', size = 12)
axis.set_ylabel('Y Axis', size = 12)
axis.axis([0,1,0,1])
anim_random_points(fig, axis)
# Position 2 for plt.show()
# plt.show()
然后,我注意到了一件奇怪的事情。至少对于我来说。请注意 Position 1
和 Position 2
(在代码末尾)。位置 1 放置在动画函数之后,另一个位置按代码方式放置在动画函数之后,因为该函数在位置 1 之后结束,因此转到位置 2。
由于FuncAnimation
需要figure
来运行动画,我想知道为什么plt.show()
在位置1上工作,但不在位置 2 上。
最佳答案
matplotlib documentation关于 FuncAnimation
It is critical to keep a reference to the instance object. The animation is advanced by a timer (typically from the host GUI framework) which the Animation object holds the only reference to. If you do not hold a reference to the Animation object, it (and hence the timers), will be garbage collected which will stop the animation.
如果将 plt.show()
放在 anim_random_points
函数之外,变量 ani
保存对动画的引用,将被垃圾收集,并且将不再显示动画。
这种情况的解决方案是从该函数返回动画
def anim_random_points(fig, axis):
# ...
ani = matplotlib.animation.FuncAnimation(...)
return ani
if __name__ == '__main__':
# ...
ani = anim_random_points(...)
plt.show()
关于python - FuncAnimation 不显示函数之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55157406/
我对此给出了答案thread ,谈论 matplotlib 上的褪色点。我对 ImportanceOfBeingErnest 的回答感到好奇。所以我尝试尝试他的代码。 首先,这是我的代码。 impor
我正在制作一个应该可视化传感器数据的应用程序。因此,我使用 python 和 tkinter 作为 gui 框架和 matplotlib 来可视化数据。该图应显示当前传感器值,因此它应该是动画的。但是
我对此给出了答案thread ,谈论 matplotlib 上的褪色点。我对 ImportanceOfBeingErnest 的回答感到好奇。所以我尝试尝试他的代码。 首先,这是我的代码。 impor
有谁知道停止 FuncAnimation 的首选方法吗?我用它来记录来自示波器的数据,并希望能够按需暂停和重新启动数据。有什么方法可以向它发送按钮点击事件吗? 谢谢,德里克 最佳答案 FuncAnim
下面的代码有效,但我认为每个重复周期都会过度绘制原始点。我希望它从原点开始,每个重复循环,有一个清晰的情节。在解决此问题的许多方法中,我尝试在 init 和 update 函数中插入 ax.clear
我试图从头开始模拟双星系统中行星的运动。为此,我需要能够在动画图中绘制点。在对整个事情进行编码之前,我正在学习使用 pyplot 为绘图设置动画。到目前为止,我还没有运气为移动点设置动画。在查看了几个
我正在尝试为机器人的链接设置动画但没有成功。 FuncAnimation 从不调用 animate 函数——从不执行打印语句。任何帮助将不胜感激。我的代码: def foo(): joints
我是 python 的新手,我正在尝试使用 matplotlibs FuncAnimation 制作动画并将其保存为某种视频格式。如果我运行以下代码: import numpy as np impor
我正在尝试用我计算的数据制作一部电影。我正在使用 ffmpeg 编写器。当我在 Spyder 中启动动画时,它工作正常并持续到最后,但当我尝试保存它时,它只持续动画的前 30%。我怎样才能保存整个动画
我想从不同的文件生成一系列动画线图的视频。下面是我的 python 代码的开始。我正在使用matplotlib.animation图书馆。 看起来像这样: 如何删除之前的绘图(一次显示一行),但保持相
我想构建一个带有某些实时图表的界面,显示一些实验的结果。为此,我决定结合使用glade(UI)、gtk、python 和 matplotlib。我正在学习一些基础知识,并且能够绘制一些实时图表。 现在
我正在尝试使用 FuncAnimation 模块制作动画,但我的代码只生成一帧然后停止。它似乎没有意识到它需要更新什么。你能帮我看看哪里出了问题吗? import numpy as np import
我使用 matplotlib 的 FuncAnimation 创建了表面绑定(bind)过程的简单动画。然而,结果非常缓慢。我怀疑这是因为我在每一帧重新绘制所有元素,但我还没有找到解决方法。任何帮助表
根据 matplotlib 的文档,FuncAnimation 重复调用一个函数来制作动画。 问题是,当没有更多图像数据可用时,我应该如何告诉 FuncAnimation() 停止? 最佳答案 如果您
如何将参数传递给animation.FuncAnimation()?我试过了,但没用。 animation.FuncAnimation() 的签名是 class matplotlib.animatio
浏览了一些关于 matplotlib 动画的教程并遇到了这个问题。我正在使用 matplotlib.animation funcanimation 如下: import matplotlib.anim
我正在尝试使用 Matplotlib 的 FuncAnimation 来动画显示每帧动画中的一个点。 # modules #--------------------------------------
我想弄清楚是否有任何方法可以更改现有 matplotlib FuncAnimation 的间隔。我希望能够根据用户输入调整动画的速度。 我发现了一个类似的问题 How do I change the
我在 Matplotlib 中遇到动画缓慢的问题。我正在对模拟结果进行动画处理,这是最简单的可视化方式,其中包含一系列随时间改变颜色的矩形。 遵循建议 here ,我使用 blitting 仅绘制每帧
我制作了一个脚本,它使用 matplotlib 的 FuncAnimation 函数来为抛物面函数的一系列等高线图设置动画。我想添加一个颜色条,其范围在整个动画过程中都不会改变。我真的不知道该怎么做。
我是一名优秀的程序员,十分优秀!