python - FuncAnimation:使用列表更新位置
问题描述
我想运行一个程序,它接受一个和零的列表(my_list),根据更新函数更新它,然后使用 FuncAnimation 动画这个过程。我有以下代码,它创建列表、列表项的矩形补丁(红色矩形表示一,黑色表示零)和更新算法。但是,我不确定如何在我的动画函数中为补丁设置动画。
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
def init():
return patches
def update(my_list):
list_update = [0]*len(my_list)
for i, value in enumerate(my_list):
if i < len(my_list)-1:
if value == 1 and my_list[i+1] == 0:
list_update[i] = 0
list_update[i+1] = 1
elif value == 1 and my_list[i+1] == 1:
list_update[i] = 1
else:
if value == 1 and my_list[0] == 0:
list_update[i] = 0
list_update[0] = 1
elif value == 1 and my_list[0] == 1:
list_update[i] = 1
my_list = list_update
return my_list
def animate(i):
update(my_list)
# code to update patches
my_list = [0, 0, 1, 1, 0, 1, 1, 1, 1, 0]
plt.style.use('dark_background')
fig = plt.figure()
ax = plt.axes()
ax.axis('scaled')
ax.set_xlim(0, len(my_list))
patches = []
for i, value in enumerate(my_list):
if value == 1:
patches.append(plt.Rectangle((i, 0), 0.9, 1, angle=0.0,
facecolor='r', edgecolor='w',
linewidth='2.0',
animated=True))
else:
patches.append(plt.Rectangle((i, 0), 1, 1, angle=0.0,
facecolor='k',
edgecolor='k',
animated=True))
anim = FuncAnimation(fig, animate, frames=10,
init_func=init, repeat=False, interval=50, blit=True)
plt.show()
解决方案
推荐阅读
- gradle - Gradle 分发远程仓库
- graphics - 吴小林算法中的端点计算是做什么的?
- python - pytest 错误:ImportError: cannot import name 'Expression' from '_pytest.mark'
- arduino - 如何解决没有这样的文件或目录
- python - QStyledItemDelegate & paint
- python - IF 重复循环的问题
- ios - 未定义的方法 `flutter_additional_ios_build_settings' 用于#
将 ruby 更新到 3.0.2 版本,现在在 Flutter 项目中遇到这些问题。
操作系统:macOS Monterey 12.0 测试版。
运行命令:pod install
Installing GoogleUtilitie
- list - 如何在另一个枚举中的枚举中声明管道列表?
- amazon-web-services - Apache Proxy Pass:连接到 websocket 服务器被拒绝
- c++ - 面向对象基础 - 将对象的结果链接到另一个对象