以下代码有一个函数,它接受一个 3d numpy 数组作为输入,并沿 x 轴获取切片,这些切片使用 matplotlib 的 FuncAnimation 函数显示。
之后动画被保存为 GIF。
如果您想更改输出颜色或遇到问题,这可能会有所帮助:
除了 colormap 'turbo',您还可以选择不同的。请参阅here 了解不同的颜色图。
如果您的颜色映射似乎关闭,您应该检查vmin(numpy_3d_array 中的最小值)和vmax(numpy_3d_array 中的最大值)。例如,如果您的所有值都低于 vmin,那么您可能会遇到问题,因此您的所有像素都将具有相同的颜色。
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation
# generating gif out of slices of 3-dimensional numpy array
def generate_gif(numpy_3d_array):
fig = plt.figure()
im = plt.imshow(numpy_3d_array[0, :, :], # display first slice
animated=True,
cmap='turbo', # color mapping
vmin=np.iinfo('uint8').min, # lowest value in numpy_3d_array
vmax=np.iinfo('uint8').max) # highest value in numpy_3d_array
plt.colorbar(label='turbo', shrink=0.75)
plt.tight_layout()
def init():
im.set_data(numpy_3d_array[0, :, :])
return im,
def animate(i):
im.set_array(numpy_3d_array[i, :, :])
return im,
# calling animation function of matplotlib
anim = animation.FuncAnimation(fig,
animate,
init_func=init,
frames=np.shape(numpy_3d_array)[0], # amount of frames being animated
interval=1000, # update every second
blit=True)
anim.save("test.gif") # save as gif
plt.show()