2

I am trying to create an ABC logo and animate it with matplotlib, I have got all the phases by changing the delta index I am able to get all x and y coordinates but I am not able to animate from one phase to another .below is the link of what I am trying to do. 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()

1 Answer 1

2

This will produce what you want

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)

The output gif file is

gif

Sign up to request clarification or add additional context in comments.

1 Comment

@akshaylalwani please accept this answer if it resolves your problem :)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.