matplotlib.animation匀速圆周运动

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

'''
圆周运动方程
x = rcoswt  
y = rsinwt
r设置为固定值,半径
w设置为固定值2Π,t设置为精度为0.01的小数
'''

fig, ax = plt.subplots()
dot, = plt.plot([],[],'ro')
t_data = np.linspace(0,400,num=400) / 100
r = 2
w = 2*np.pi
def init():
    ax.set_xlim(-4, 4)
    ax.set_ylim(-4, 4)
    ax.xaxis.set_ticks_position('bottom')  # 设置为底部
    ax.spines['bottom'].set_position(('data', 0))  # 获取底部轴设置其位置,表示设置底部轴移动到竖轴的0坐标位置
    ax.yaxis.set_ticks_position('left')
    ax.spines['left'].set_position(('data', 0))
    return ax

def get_dot():
    for i in range(0,500):
        newdot = [r*np.cos(w*t_data[i]),r*np.sin(w*t_data[i])]
        yield newdot

def update(frame):
    dot.set_data(frame[0], frame[1])
    return dot

ani = FuncAnimation(fig, update, frames=get_dot(), init_func=init, interval=100)
ani.save('uniform_motion_circle.gif', writer='pillow', fps=30)

 


版权声明:本文为zjh12312311原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。