我一直在尝试从图yield
中matplotlib
创建一个动画。假设我有
tripcolor
如何在每次动画迭代后更改C的值?
非常感谢,
答案 0 :(得分:1)
field
保证是matplotlib.collections.Collection
基类的一个实例,它有助于为这种情况定义set_array()
方法。
在动画的每次迭代中,只需将C
的新值传递给field.set_array()
方法即可。假设你使用FuncAnimation
类来制作动画,就像你想要的那样,这会减少为:
fig = plt.figure()
ax = plt.subplot(111)
field = ax.tripcolor(tri, C)
def update_tripcolor(frame_number):
# Do something here to update "C"!
C **= frame_number # ...just not this.
# Update the face colors of the previously plotted triangle mesh.
field.set_array(C)
# To triangular infinity and beyond! (Wherever that is. It's probably scary.)
FuncAnimation(fig, update_tripcolor, frames=10)
另一方面,更新tri
要困难得多。虽然这个问题没有尝试这样做,但是明显的读者可能会好奇地知道你基本上必须删除,重新创建并重新添加整个三角形网格(即field
)到这个数字上#39; s轴。当然,这既低效又痛苦。 (欢迎来到Matplotlib。人口:你。 )
愿field.set_array()
与您同在。