Matplotlib:能否通过父轴对象获取其关联的colorbar对应轴?
两个轴对象确实存在绑定关系,你完全可以通过plt.gca()拿到的绘图轴对象,直接获取到对应的colorbar轴,操作方式如下:
# 获取绘图轴 ax = plt.gca() # 先取ax绑定的colorbar实例,再取它对应的轴对象,就是你要的第二个轴 cbar_ax = ax.colorbar.ax
原理说明
你调用fig.colorbar(mappable, ax=ax)方法时,matplotlib会自动将生成的Colorbar实例赋值给传入的绘图轴的colorbar属性,顺着这个属性就可以访问到colorbar对应的轴对象。
你可以用下面的代码验证对应关系:
import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np fig = plt.gcf() ax = plt.gca() ax.pcolormesh(np.random.rand(10, 10)) cbar = fig.colorbar(mpl.cm.ScalarMappable(), ax=ax) # 验证是同一个对象 print(cbar.ax is ax.colorbar.ax) # 输出 True print(ax.colorbar.ax is fig.axes[1]) # 输出 True
注意事项
如果同一个绘图轴多次绑定colorbar,ax.colorbar属性只会保留最后一次绑定的colorbar实例。如果需要同时管理同一个轴的多个colorbar,建议你在生成colorbar时就显式存储对应的实例,避免属性覆盖丢失引用。
内容的提问来源于stack exchange,提问作者fabian
相关产品推荐
相关产品推荐

