Python 使用matplotlib平移多边形的动画

Python 使用matplotlib平移多边形的动画,python,python-2.7,animation,matplotlib,Python,Python 2.7,Animation,Matplotlib,目标是绘制一个多边形,然后水平平移它。这必须以动画形式显示。以下是我的代码:- import matplotlib.pyplot as plt from matplotlib.path import Path import matplotlib.patches as patches import time import numpy as np verts = np.array([ [0., -0.25], [0.5, 0.], [0., 0.25],

目标是绘制一个多边形,然后水平平移它。这必须以动画形式显示。以下是我的代码:-

import matplotlib.pyplot as plt
from matplotlib.path import Path
import matplotlib.patches as patches
import time
import numpy as np

verts = np.array([
    [0., -0.25],  
    [0.5, 0.],  
    [0., 0.25],  
    [0., -0.25]
    ])
codes = [Path.MOVETO,
         Path.LINETO,
         Path.LINETO,
         Path.CLOSEPOLY,
         ]

path = Path(verts, codes)

fig = plt.figure()
ax = fig.add_subplot(111)
patch = patches.PathPatch(path, facecolor='orange')
ax.add_patch(patch)
ax.set_xlim(-10,10)
ax.set_ylim(-10,10)
plt.show()
time.sleep(1)
verts[:,0]=verts[:,0]+3
path = Path(verts, codes)
patch = patches.PathPatch(path, facecolor='orange')
ax.add_patch(patch)
plt.draw()
直到
plt.show()
,我画了一个三角形,然后显示出来。此后,我暂停以模拟动画的时间流逝。然后我重新绘制三角形,但当我要求
matplotlib
刷新绘图时,没有任何更改。我在哪里出错

第二个问题,我不想重新绘制三角形,我只想使用
set\u patch
等方法更新现有三角形的顶点坐标,但没有这种方法。然而,我们确实使用
set_ydata
等来修改现有绘图并创建动画。如何使用一些设置方法来设置所需运动的动画?

在A的帮助下,我能够想出如何做到这一点:-

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation as animation
import matplotlib.patches as patches

fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xlim(-10,10)
ax.set_ylim(-10,10)

v= np.array([
    [0., -0.25],  
    [0.5, 0.],  
    [0., 0.25]
    ])

patch = patches.Polygon(v,closed=True, fc='r', ec='r')
ax.add_patch(patch)

def init():
    return patch,

def animate(i):
    v[:,0]+=i
    patch.set_xy(v)
    return patch,

ani = animation.FuncAnimation(fig, animate, np.arange(1, 5), init_func=init,
                              interval=1000, blit=True)
plt.show()

这样,我们可以使用
set_xy
来平移多边形。然后,通过提供一种为对象创建控制柄并对其进行操作的方法,这也解决了中的问题。

我编辑了代码并删除了将面片多次添加到轴的部分。这是完全没有必要的。