首页 > 解决方案 > matplotlib 的 Funcanimation 使多个颜色条

问题描述

我想用 matplotlib 的 FuncAnimation 制作 gif 动画。

这是代码。

但是输出图像包含多个这样的颜色条(链接

有谁知道如何解决这个问题?

如果我设置

plt.colorbar() 

就在之后或之前

ani = animation.FuncAnimation(fig, update, interval=100 ,frames=400)

,它返回 RuntimeError: No mappable was found to use for colorbar creation。首先定义一个可映射的对象,例如图像(使用 imshow)或轮廓集(使用 contourf)。

如果我用 if(k==0): plt.colorbar() 替换 plt.colorbar(),则图像包含相同的 2 个颜色条。

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from PIL import Image
import moviepy.editor as edit
from mpl_toolkits.axes_grid1 import make_axes_locatable
def update(k):
    plt.cla() # clear axis

  #updating Val...

    plt.contourf(X0, Y0, Val, cmap = "bwr")
    plt.colorbar()
    plt.axes().set_aspect("equal")
    plt.title("title-name")

fig = plt.figure()
ani = animation.FuncAnimation(fig, update, interval=100 ,frames=400)
ani.save("out.gif", writer='imagemagick')

标签: pythonmatplotlib

解决方案


我加

plt.colorbar(plt.contourf(X0,Y0,charge,cmap="bwr",levels=np.linspace(-1,1,100,endpoint=True)))

刚过

fig=plt.figure()

它工作成功。此方法取自 ImportanceOfBeingErnest 先生的回答(为 maptlotlib FuncAnimation 维护一个颜色条


推荐阅读