In [13]:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from IPython.display import HTML

bmax = 1.0
freq = 60.0
w = 2 * np.pi * freq

num_frames = 120
t = np.linspace(0, 1/freq, num_frames, endpoint=False)

Baa = np.sin(w*t) * np.exp(1j*0)
Bbb = np.sin(w*t - 2*np.pi/3) * np.exp(1j*2*np.pi/3)
Bcc = np.sin(w*t + 2*np.pi/3) * np.exp(1j*4*np.pi/3)
Bnet = Baa + Bbb + Bcc

theta = np.linspace(0, 2*np.pi, 200)
circle = 1.5 * np.exp(1j*theta)

fig, ax = plt.subplots(figsize=(8, 8))
ax.set_aspect('equal', adjustable='box')
ax.set_xlim(-2, 2)
ax.set_ylim(-2, 2)
ax.grid(True)

ax.plot(np.real(circle), np.imag(circle))
line_baa,  = ax.plot([], [], linewidth=2)
line_bbb,  = ax.plot([], [], linewidth=2)
line_bcc,  = ax.plot([], [], linewidth=2)
line_bnet, = ax.plot([], [], linewidth=3)
ax.set_title("Three-Phase Resultant Magnetic Field")
ax.set_xlabel("Real axis")
ax.set_ylabel("Imag axis")

def init():
    for ln in (line_baa, line_bbb, line_bcc, line_bnet):
        ln.set_data([], [])
    return (line_baa, line_bbb, line_bcc, line_bnet)

def update(i):
    line_baa.set_data([0, np.real(Baa[i])], [0, np.imag(Baa[i])])
    line_bbb.set_data([0, np.real(Bbb[i])], [0, np.imag(Bbb[i])])
    line_bcc.set_data([0, np.real(Bcc[i])], [0, np.imag(Bcc[i])])
    line_bnet.set_data([0, np.real(Bnet[i])], [0, np.imag(Bnet[i])])
    return (line_baa, line_bbb, line_bcc, line_bnet)

anim = FuncAnimation(fig, update, frames=num_frames, init_func=init,
                     interval=2000/num_frames, blit=True, repeat=True)

plt.close(fig)
HTML(anim.to_jshtml())
Out[13]:
No description has been provided for this image