Проблема в том, что данные, которые вы хотите анимировать, лежат между 2 и 4, но полярный график показывает только диапазон между -0.04 и 0.04.Это связано с использованием пустого участка для начала.Это потребует, чтобы вы установили пределы вручную.Например,
ax.set_rlim(0,5)
Это единственное дополнение, необходимое для работы вашего кода.
Однако можно оптимизировать немного больше, например, использовать NumPy повсюду и повторно использовать существующие переменные,
import matplotlib.pyplot as plt
from matplotlib import animation
import numpy as np
angles = (np.linspace(0, 2 * np.pi, 360, endpoint=False))
fig= plt.figure()
ax = fig.add_subplot(111, polar=True)
line1, =ax.plot([],[], 'g-', linewidth=1)
def update(theta):
line1.set_data(angles,energy_band(3, theta, 3))
return line1,
def init():
line1.set_data([],[])
ax.set_rlim(0,5)
return line1,
def energy_band(wave_number, phase_offset, energy_level):
return np.sin(angles*wave_number+phase_offset*np.pi/360)+energy_level
ani = animation.FuncAnimation(fig, update, frames=np.arange(0,3600,5),
blit=True, interval=200, init_func=init)
plt.show()