pcolormesh matplotlib не обновляется во время анимации.Зачем? - PullRequest
0 голосов
/ 02 октября 2018

Я пытался создать анимацию, используя pcolormesh, но у моего кода были проблемы, поэтому я решил использовать один из ответов в этом посте в качестве отправной точки.В ответе было слишком много графиков, и мне нужна была только pcolormesh, поэтому я удалил ненужные графики.Загадочная вещь в том, что удаление графиков по какой-то причине нарушило анимацию.Я сделал минимальный пример, который содержит pcolormesh и текст.Код работает, пока я не комментирую обновление текста, но я не могу понять, почему.

Мои вопросы следующие: есть ли причина, по которой pcolormesh не будет обновляться в некоторых сценариях?Как я могу исправить анимацию без добавления других графиков или текста?

Примечание. Я использую OSX, у которого есть некоторые проблемы с опцией blit.

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation as animation

y, x = np.meshgrid(np.linspace(-10, 10,100), np.linspace(-10, 10,100))
z = np.sin(x)*np.sin(x)+np.sin(y)*np.sin(y)

fig = plt.figure(figsize=(16, 8),facecolor='white')
ax = plt.subplot()
quad = ax.pcolormesh(x,y,z,shading='gouraud')
ax.set_xlabel('time')
ax.set_ylabel('amplitude')
cb = fig.colorbar(quad,ax=ax)
time_text = ax.text(0.02, 0.95, 'start', transform=ax.transAxes)

def animate(iter):
    z = np.sin(x-iter/(2*np.pi))*np.sin(x-iter/(2*np.pi))+np.sin(y)*np.sin(y)
    time_text.set_text(str(iter)) #comment this line to break the animation
    quad.set_array(z.ravel())

anim = animation.FuncAnimation(fig,animate,frames=100,interval=50,blit=False,repeat=False)
plt.show()

Редактировать: как былоуказал в комментариях, это было связано с бэкэндом.Мои обновленные вопросы: почему этот код не работает для некоторых бэкэндов?Разве поведение pcolormesh не должно зависеть от добавленного текста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...