在Python3中使用imshow更新图例条目

时间:2018-03-26 22:20:30

标签: python python-3.x animation matplotlib imshow

我尝试添加图例以覆盖显示随机数字动画数组的imshow()图表。我希望图例更新以显示我们正在查看的步骤。

我尝试按照here步骤进行操作,其中显示了如何使用FuncAnimation为子图()创建动画图例。我相信显示动画数组的唯一方法是使用ArtistAnimation()和imshow(),但其中一个或两个都会导致我遇到链接解决方案的问题。

我已经在工作代码下方附加了生成动画随机数组,并将图例解决方案(来自链接)双重注释掉。

非常感谢任何有关补救措施的帮助或建议。

谢谢, ç

function Is_Present() : Boolean;
begin
  Result := False;
  if FileExists('{sys}\driver\gpiotom.sys') then
  begin
    Log('File exists');
    Result := True;
  end;
end;

1 个答案:

答案 0 :(得分:0)

如您所链接的问题所示,使用FuncAnimation更容易。这允许简单地更新单个图例和imshow图,而不是创建其中的几个。

因为传说应该为imshow情节显示的内容并不是很清楚,所以我只创建了一个蓝色矩形。你当然可以用你喜欢的任何东西替换它。

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

N=20
steps = 100
interval_pause = 100
repeat_pause = 1000

cmap = colors.ListedColormap(['white', 'black'])
bounds=[-1,0,1]
norm = colors.BoundaryNorm(bounds, cmap.N)
fig = plt.figure()
ax = plt.gca()
ax.axes.xaxis.set_ticklabels([])
ax.axes.yaxis.set_ticklabels([])
ax.axes.xaxis.set_ticks([])
ax.axes.yaxis.set_ticks([])

array = 2*(np.random.rand(N,N,steps)-0.5)

leg = ax.legend([plt.Rectangle((0,0),1,1)],["step0"], loc='upper left',prop={'size':12})

img = ax.imshow(array[:,:,0],interpolation='nearest',cmap=cmap,norm=norm, animated=True)
fig.colorbar(img, cmap=cmap, norm=norm, boundaries=bounds, ticks=[-1,0,1])

def update(step):
    state = array[:,:,step]
    img.set_data(state)
    lab = 'step = '+str(step)
    leg.texts[0].set_text(lab)

ani = animation.FuncAnimation(fig,update,frames = steps, 
                              interval=interval_pause,repeat_delay=repeat_pause)
plt.show()

enter image description here