python - 使用 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],  
    [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_patch 等方法更新现有三角形的顶点坐标,但没有这样的方法。而我们确实使用 set_ydata 等来修改现有绘图并创建动画。如何使用一些设置方法来动画所需的 Action ?

最佳答案

earlier post 的帮助下,我能够弄清楚如何做到这一点:-

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 来平移多边形。这也解决了 this post 中的问题通过提供一种方法来创建对象句柄并对其进行操作。

关于python - 使用 matplotlib 转换多边形的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38341722/

相关文章:

python - 任意数量的分配((数字)列表)转换为单个列表

ios - CollectionViewCell 内向上移动标签动画

jquery - 页面加载时元素在 css 中的不同动画

python - 创建新文件时运行 python 脚本

python - Pandas - 如何从数据框中获取索引值

Python 抓取 XHR 返回 ValueError : Too many values to unpack

python - 将 Excel 工作表添加到工作簿末尾

python - 在数组的数组中访问数组的行?

ios - 第二次触摸动画

python - 如何在多线程中使用python多处理代理对象