Я пытался создать анимацию в matplotlib
с графика tripcolor
. Предположим, у меня естьОбновление графика tripcolor в анимации matplotlib
field = ax.tripcolor(tri, C)
Как изменить значение C после каждой итерации анимации?
Большое спасибо,
Я пытался создать анимацию в matplotlib
с графика tripcolor
. Предположим, у меня естьОбновление графика tripcolor в анимации matplotlib
field = ax.tripcolor(tri, C)
Как изменить значение C после каждой итерации анимации?
Большое спасибо,
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
) на оси этой фигуры. Конечно, это неэффективно и болезненно. (Добро пожаловать в Matplotlib населения:.. вас)
мая field.set_array()
быть с вами.