Python - 如何为我的散点图制作动画?

标签 python numpy matplotlib

到目前为止,这是我的脚本:

import numpy as np
import matplotlib.pyplot as plt
import random
t=0
r=3.0
n=0
A=[]
for x in range(10):
  for y in range(10):
    A.append([random.uniform(0,1),random.uniform(0,1)])
for m in range(len(A)):
  plt.plot(A[m][0],A[m][1], "x", color="blue")
plt.show()
while n<=100:
  for m in range(len(A)):
    A[m][0]=r*A[m][0]*(1-A[m][0])
    A[m][1]=r*A[m][1]*(1-A[m][1])
  for m in range(len(A)):
    plt.plot(A[m][0],A[m][1], "x", color="blue")
  plt.show()
  n+=1

我现在想做的是让它动画化,这样我就不必每次都关闭绘图让 python 重新计算并显示下一张图像。相反,它应该每隔 5 秒向我展示一个新情节。对我来说最好的方法是什么?

最佳答案

你可以使用matplotlib.animation包:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import random

t=0
r=3.0
n=0
A=[]

for x in range(10):
    for y in range(10):
        A.append([random.uniform(0,1),random.uniform(0,1)])
A = np.array(A).transpose()

fig = plt.figure()
line, = plt.plot(A[0],A[1], "x", color="blue")

def update():
    for i in range(100):
        A[0], A[1] = r*A[0]*(1-A[0]), r*A[1]*(1-A[1])
        yield A

def draw(data):
    line.set_xdata(data[0])
    line.set_ydata(data[1])
    return line,

ani = animation.FuncAnimation(fig, draw, update, interval=1000, blit=False)

plt.show()

update 函数是一个生成器,它为后续步骤生成数​​据,而 draw 是一个更新绘图数据并返回它的函数。

关于Python - 如何为我的散点图制作动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14358284/

相关文章:

python - python 中用于实现 37% 规则的字典

python - 如何设置次轴主定位器

python 和 matplotlib 以及更改标记颜色

python - 比较 pandas 中两个数据框中的元素

python - 使用 np.argpartition 对多维数组中的值进行索引

python - 在一个 df 上创建具有条件的 lambda 函数,以在另一个 df 的 df.apply 中使用

python - 如何在 python 中自动将条件组合在一起?

python - 使用python numpy在3d空间中找到一个点的k个最近邻居

python - 将鼠标悬停在干图中 matplotlib 中的一个点上时,可能会出现标签吗?

python - 带 Bootstrap 的 django 表单