matplotlib 3.3+调用Colorbar.set_clim报错,如何修改色阶量程
问题原因
matplotlib 3.3及以上版本重构了ColorBar的API,移除了ColorBar对象的set_clim方法,色阶量程的调整逻辑被统一收敛到与ColorBar绑定的可映射对象(Mappable,即你代码中调用imshow返回的line1实例)上。
修复方案
只需要修改两处代码即可兼容新版本:
- 将原
cbar.set_clim(...)的调用替换为line1.set_clim(...),直接调整绘图对象的色阶范围,ColorBar会自动同步适配 - 删除冗余的
cbar.draw_all()调用
修改后可运行的完整代码
import matplotlib.pyplot as plt import numpy as np import time x = np.linspace(0, 10, 100) y = np.cos(x) y = y.reshape(10,10) plt.ion() figure = plt.figure() line1 = plt.imshow(y) cbar = plt.colorbar(line1) for p in range(100): updated_y = np.random.randint(0,10)*np.cos(x-0.05*p).reshape(10,10) line1.set_data(updated_y) # 调整绘图对象的色阶即可同步更新colorbar line1.set_clim(vmin=np.min(updated_y),vmax=np.max(updated_y)) figure.canvas.draw() figure.canvas.flush_events() time.sleep(1)
内容的提问来源于stack exchange,提问作者Wolfmercury
相关产品推荐
相关产品推荐

