2015-08-31 3 views

ответ

0

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() быть с вами.

Смежные вопросы