Python 如何更改计时器上的matplotlib修补程序?

Python 如何更改计时器上的matplotlib修补程序?,python,matplotlib,timer,Python,Matplotlib,Timer,我有一个包含补丁的matplotlib绘图。我希望定期更改补丁(删除旧补丁并添加另一个补丁) 这是一般设置 fig = plt.figure() ax = fig.add_subplot(111) path1 = Path(vertices, codes) patch1 = patches.PathPatch(path1, facecolor='white', lw=0.3, fill=False) ax.add_patch(patch1) plt.show() 1秒后,移除修补程序1,然

我有一个包含补丁的matplotlib绘图。我希望定期更改补丁(删除旧补丁并添加另一个补丁)

这是一般设置

fig = plt.figure()
ax = fig.add_subplot(111)

path1 = Path(vertices, codes)
patch1 = patches.PathPatch(path1, facecolor='white', lw=0.3, fill=False)

ax.add_patch(patch1)
plt.show()
1秒后,移除修补程序1,然后

path2 = Path(vertices2, codes2)
patch2 = patches.PathPatch(path2, facecolor='white', lw=0.3, fill=False)

ax.add_patch(patch2)

可以使用
matplotlib.animation.FuncAnimation
每秒绘制一个新多边形

import matplotlib.pyplot as plt
import matplotlib.animation
import numpy as np; np.random.seed(1)

def get_vertices():
    p = np.random.rand(4,2)*.8+.1
    d = p-np.mean(p,axis=0)
    s = np.arctan2(d[:,0], d[:,1])
    return p[np.argsort(s),:]

fig = plt.figure()
ax = fig.add_subplot(111)

patches = []
kw = dict(edgecolor='darkorange', lw=3, facecolor="peachpuff")
patches.append(plt.Polygon(get_vertices(),**kw)) 
# of course  PathPatch(Path(get_vertices())) 
# would also work
ax.add_patch(patches[0])

def update(i):
    patches[0].remove()
    patches[0] = plt.Polygon(get_vertices(),**kw)
    ax.add_patch(patches[0])

ani = matplotlib.animation.FuncAnimation(fig, update, interval=1000)
plt.show()

您可以使用
matplotlib.animation.FuncAnimation
每秒绘制一个新多边形

import matplotlib.pyplot as plt
import matplotlib.animation
import numpy as np; np.random.seed(1)

def get_vertices():
    p = np.random.rand(4,2)*.8+.1
    d = p-np.mean(p,axis=0)
    s = np.arctan2(d[:,0], d[:,1])
    return p[np.argsort(s),:]

fig = plt.figure()
ax = fig.add_subplot(111)

patches = []
kw = dict(edgecolor='darkorange', lw=3, facecolor="peachpuff")
patches.append(plt.Polygon(get_vertices(),**kw)) 
# of course  PathPatch(Path(get_vertices())) 
# would also work
ax.add_patch(patches[0])

def update(i):
    patches[0].remove()
    patches[0] = plt.Polygon(get_vertices(),**kw)
    ax.add_patch(patches[0])

ani = matplotlib.animation.FuncAnimation(fig, update, interval=1000)
plt.show()