我想用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')
答案 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)中采用的。