Imshow с цветными полосами с использованием Matplotlib анимации сюжетов

Я пытаюсь выяснить, как анимировать 3 сюжета, используя matplotlib.animation, Мой код выглядит так:

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

fig, (ax1, ax2, ax3) = plt.subplots(1, 3, sharex='col', sharey='row')
ax1.set_aspect('equal', 'datalim')
ax1.set_adjustable('box-forced')
ax2.set_aspect('equal', 'datalim')
ax2.set_adjustable('box-forced')
ax3.set_aspect('equal', 'datalim')
ax3.set_adjustable('box-forced')

#fig = plt.figure()


def f(x, y):
    return np.sin(x) + np.cos(y)
def g(x, y):
    return np.sin(x) + 0.5*np.cos(y)
def h(x, y):
    return 0.5*np.sin(x) + np.cos(y)

x = np.linspace(0, 2 * np.pi, 120)
y = np.linspace(0, 2 * np.pi, 100).reshape(-1, 1)

im1 = plt.imshow(f(x, y), cmap=plt.get_cmap('viridis'), animated=True)
plt.colorbar(im1)
im2 = plt.imshow(g(x, y), cmap=plt.get_cmap('viridis'), animated=True)
plt.colorbar(im2)
im3 = plt.imshow(h(x, y), cmap=plt.get_cmap('viridis'), animated=True)
plt.colorbar(im3)


def updatefig(*args):
    global x, y
    x += np.pi / 15.
    y += np.pi / 20.
    im1.set_array(f(x, y))
    im2.set_array(g(x, y))
    im3.set_array(h(x, y))
    return im1,im2,im3

ani = animation.FuncAnimation(fig, updatefig, interval=50, blit=True)
#plt.colorbar()
plt.show()

Первое - почему я не вижу двух других графиков, кроме im1? Второе - как правильно добавить цветовые полосы на каждый из участков?

1 ответ

Это происходит потому, что вы не ссылаетесь на другие созданные вами объекты топора. Таким образом, вы продолжаете ссылаться на одни и те же заданные оси. Та же история с цветными полосами. Вы довольно близки, вам просто нужно указать все на нужный объект, посмотреть.

im1 = ax1.imshow(f(x, y), cmap=plt.get_cmap('viridis'), animated=True)
fig.colorbar(im1,ax=ax1)

im2 = ax2.imshow(g(x, y), cmap=plt.get_cmap('viridis'), animated=True)
fig.colorbar(im2,ax=ax2)

im3 = ax3.imshow(h(x, y), cmap=plt.get_cmap('viridis'), animated=True)
fig.colorbar(im3,ax=ax3)

Один снимок из 3 анимационных сюжетов

Другие вопросы по тегам