Skip to main content
 首页 » 编程设计

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

2025年05月04日13kenshinobiy

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

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 是一个更新绘图数据并返回它的函数。