Using matplotlib, I am trying to use the animate function with a polygon, to rotate it in the plane.
The code pasted below only draws the first polygon but the animation doesn't work.
Can someone spot what's wrong in the animate
function?
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
from matplotlib.patches import Polygon
fig = plt.figure()
fig.set_dpi(100)
fig.set_size_inches(7, 6.5)
ax = plt.axes(xlim=(-30, 30), ylim=(-30, 30))
pts = [[0.,0.], [2.,0.], [9.6,7.6], [9.6,9.6]]
patch = plt.Polygon(pts,closed=None, fill=None, edgecolor='r')
def init():
patch.pts = [[0.,0.], [2.,0.], [9.6,7.6], [9.6,9.6]]
ax.add_patch(patch)
return patch,
def animate(i):
x1=0.+ 10. * np.sin(np.radians(i))
x2=2.+ 10. * np.sin(np.radians(i))
x3=9.6+ 10. * np.sin(np.radians(i))
x4=9.6+ 10. * np.sin(np.radians(i))
y1=0.+ 10. * np.cos(np.radians(i))
y2=0.+ 10. * np.cos(np.radians(i))
y3=7.6+ 10. * np.cos(np.radians(i))
y4=9.6+ 10. * np.cos(np.radians(i))
patch.pts = [[x1,y1], [x2,y2], [x3,y3], [x4,y4]]
return patch,
anim = animation.FuncAnimation(fig,animate,init_func=init,frames=36,interval=1000,blit=True)
plt.show()