我对使用Python编程真的很陌生,在我的最终项目中,我需要创建一个动画,其中10个点在空间中随机移动(布朗运动)。
我的老师给了我一些例子,但是我无法弄清楚为什么我的程序不能正常工作。错误提示:
“ _ included_frames frame_dir = os.path.dirname(frame_list [0]),
IndexError:列表索引超出范围”
对不起,如果我没有正确表达自己的意思,但是英语不是我的母语。
from math import *
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d
import matplotlib.animation as animation
fig = plt.figure()
ax = plt.axes(projection='3d')
N=10
x=500*np.random.random(N)
y=500*np.random.random(N)
z=500*np.random.random(N)
def frame(w):
ax.clear()
x=x+np.random.normal(0.0,50.0,10)
y=y+np.random.normal(0.0,50.0,10)
z=z+np.random.normal(0.0,50.0,10)
mensaje="Movimiento Browniano"
plt.title(mensaje)
ax.set_xlim3d(-500.0,500.0)
ax.set_ylim3d(-500.0,500.0)
ax.set_zlim3d(-500.0,500.0)
plot=ax.scatter3D(x, y, z, c='r')
return plot
anim = animation.FuncAnimation(fig, frame, frames=100, blit=False)
anim.save( 'MovimientoBrowniano.html', fps=5 )
答案 0 :(得分:0)
您的代码有两个主要问题。
x
,y
和z
。但是,您确实想更改在功能范围之外定义的变量。您可以通过全局声明它们来轻松地做到这一点:在函数中添加global x,y,z
。您正在尝试将动画保存到html文件。那不是有效的视频格式。我不知道您在此定位的是哪种格式,但是常见的选择是动画gif,它可以由
生成anim.save('MovimientoBrowniano.gif', writer = "pillow", fps=5 )