matplotlib的funcanimimation使多个颜色条

时间:2018-09-24 13:24:39

标签: python matplotlib

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

这是代码。

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

有人知道如何解决此问题吗?

如果我设置

plt.colorbar() 

之后或之前
ani = animation.FuncAnimation(fig, update, interval=100 ,frames=400)

,它返回 RuntimeError:未找到可用于颜色条创建的可映射。首先定义一个可映射对象,例如图像(带有imshow)或轮廓集(带有outlinef)。

如果我用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')

1 个答案:

答案 0 :(得分:0)

我添加

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

紧随其后

fig=plt.figure()

,它可以成功运行。 此方法是从ImportanceOfBeingErnest先生的答案(Maintaining one colorbar for maptlotlib FuncAnimation)中采用的。