Matplotlib动画

2024-09-30 18:16:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个ABC徽标,并用matplotlib制作动画。通过更改增量索引,我获得了所有阶段。我能够获得所有x和y坐标,但无法从一个阶段到另一个阶段制作动画。下面是我尝试做的链接。 https://www.youtube.com/watch?v=sL0FhqGtV4U&ab_channel=AustralianTelevisionArchive

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


fig = plt.figure()
axis = plt.axes(xlim =(-110, 110),
                ylim =(-110, 110))
delta = [0, 3.14 / 8, 3.14 / 4, 3 * 3.14 / 8, 3.14 / 2, 5 * 3.14 / 8, 3 * 3.14 / 8, 7 * 3.14 / 8, 3.14]

def dS(delta):
    A = 100
    B = 100
    a = 1
    b = 3
    # delta = 3.14/4
    t = 0
    sinVals = []
    cosVals = []
    for i in range(0, 1000):
        t += 0.01
        # Apply Lissajous Parametric Equations
        sinVals.append(A * math.sin(a * t + delta))
        cosVals.append(B * math.sin(b * t))
    return sinVals,cosVals
    
sinVals,cosVals=deltaShift.dS(delta[1])


line, = axis.plot(sinVals, cosVals)
plt.show()

Tags: importmatplotlibasds动画pltmathsin
1条回答
网友
1楼 · 发布于 2024-09-30 18:16:33

这将产生你想要的

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


pi = np.pi
deltas = np.linspace(0,8,32) / pi

def dS(delta):
    
    A = 100
    B = 100
    a = 1
    b = 3
    # delta = 3.14/4
    t = 0
    sinVals = []
    cosVals = []
    for i in range(0, 1000):
        t += 0.01
        # Apply Lissajous Parametric Equations
        sinVals.append(A * math.sin(a * t + delta))
        cosVals.append(B * math.sin(b * t))
    return sinVals,cosVals
    
def make_plot(delta):
    
    ax.clear()
    ax.set_xlim(-110, 110)
    ax.set_ylim(-110, 110)
    sinVals,cosVals=dS(delta)
    line, = ax.plot(sinVals, cosVals)

fig,ax = plt.subplots()

ani = animation.FuncAnimation(fig, make_plot, deltas, blit = False)
ani.save('test.gif', writer='pillow', fps=16)

输出的gif文件是

gif

相关问题 更多 >