Я пытаюсь сделать анимацию для моей тепловой карты, чтобы визуализировать, как значения меняются со временем.
В следующем примере я собираюсь изменить значения для двух матриц, тогда как одна матрица начинается со всех элементов, равных нулю, а другая начинается со всех элементов, равных единице.
M1 = np.zeros((4,4))
M2 = np.ones((4,4))
Вот мой полный код для анимации
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from mpl_toolkits.axes_grid1 import make_axes_locatable
from tqdm import tqdm
M1 = np.zeros((4,4))
M2 = np.ones((4,4))
fig, ax = plt.subplots(1,2, figsize=(12,8))
ims = []
for e in tqdm(range(10)):
M1[:,1] += e
M1[2,:] -= e
M1[2,1] += 10/(e+1)
M2[:,1] += np.random.randn(4)
im1 = ax[0].imshow(M1, cmap='jet')
im2 = ax[1].imshow(M2, cmap='jet')
ims.append([im1,im2])
ax[0].axis('off')
ax[1].axis('off')
divider1 = make_axes_locatable(ax[0])
divider2 = make_axes_locatable(ax[1])
cax1 = divider1.append_axes('right', size='5%', pad=0.05)
cax2 = divider2.append_axes('right', size='5%', pad=0.05)
fig.colorbar(im1, ax=ax[0], cax=cax1)
fig.colorbar(im2, ax=ax[1], cax=cax2)
pad = 15
# Annotating columns
ax[0].annotate('Weight', xy=(0.5,1), xytext=(0,pad),
xycoords='axes fraction', textcoords='offset points',
size='large', ha='center', va='baseline', fontsize=18)
ax[1].annotate('Gradient', xy=(0.5,1), xytext=(0,pad),
xycoords='axes fraction', textcoords='offset points',
size='large', ha='center', va='baseline', fontsize=18)
# Annotating rows
row = 'Row 1'
ax[0].annotate(row, xy=(0,0.5), xytext=(-ax[0].yaxis.labelpad - pad,0),
xycoords=ax[0].yaxis.label, textcoords='offset points',
size='large', ha='right', va='center', fontsize=18)
ani = animation.ArtistAnimation(fig, ims, interval=500, blit=True,
repeat_delay=1000)
Поскольку я мутирую только 2-й столбец и 3-й ряд матриц для тепловой карты на L.H.S, и мутирую только 2-й столбец для R.H.S, другие значения фона должны быть неизменными на 0 и 1 соответственно. Но вы можете видеть, что полученная анимация, как показано ниже, не работает должным образом.
Что здесь не так и как это исправить?