Han*_*itz 1 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
Run Code Online (Sandbox Code Playgroud)
我现在要做的就是为它设置动画,这样我每次都不需要关闭绘图,以便python重新计算下一个图像.相反,它应该告诉我每个说5s的新情节.对我来说最好的方法是什么?
你可以使用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()
Run Code Online (Sandbox Code Playgroud)
该update函数是一个生成器,它为后续步骤生成数据,同时draw是一个更新绘图数据并返回它的函数.
| 归档时间: |
|
| 查看次数: |
5658 次 |
| 最近记录: |