python - 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')
解决方案
我加
plt.colorbar(plt.contourf(X0,Y0,charge,cmap="bwr",levels=np.linspace(-1,1,100,endpoint=True)))
刚过
fig=plt.figure()
它工作成功。此方法取自 ImportanceOfBeingErnest 先生的回答(为 maptlotlib FuncAnimation 维护一个颜色条)
推荐阅读
- django - django rest框架中的嵌套序列化器数据
- vb.net - 从 DataTable 更新 OleDB 表的最简单方法
- google-sheets - 单元格中显示的最大值
- linux - CSV 文件不输出数据对齐不工作
- imagemagick - 将任何常见的图像类型转换为可打印的 dxf
- excel - 自定义 24 小时格式以计算 Excel 中日期之间的差异
- unity3d - 统一着色器中的下标无效
- android - Android onActivityResult() 和 data.getStringExtra() 给出 java.lang.NullPointerException 的问题:
- php - SQL select语句将数据放入输入字段-输入中的“名称”属性不会使用php将数据传输到sql insert语句
- jenkins - 如何将变量从管道传递到詹金斯的工作?