首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式从axis对象中获取色条

以编程方式从axis对象中获取色条
EN

Stack Overflow用户
提问于 2022-09-19 05:22:36
回答 1查看 29关注 0票数 0

考虑在循环中绘制数据的下列代码。为了不绘制多个颜色条,在绘制新的颜色栏之前,我会删除它们。但是,我正在手动跟踪这些颜色条。是否有一种方法可以使用诸如ax[0].get_colorbar之类的方法获得对它们的引用。这样我的代码就简单多了。

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np

# How to get a colorbar from an axis?

nrows = 1
ncols = 2
nstep = 5

fig, ax = plt.subplots(nrows=nrows,ncols=ncols)

cb0 = None
cb1 = None

for istep in range(nstep):
    data = np.random.random(size=(5,5))
    imu0 = ax[0].pcolormesh(data)
    imu1 = ax[1].pcolormesh(data)
    
    # this code is for removing previously drawn colorbars
    # I would like to get a reference to the colorbar cb0 from ax0 
    # and then remove it. 
    # I do not want to keep track of the colorbars manually 
    
    if cb0 is not None:
        cb0.remove()
    if cb1 is not None:
        cb1.remove()
    cb0 = plt.colorbar(imu0,ax=ax[0])
    cb1 = plt.colorbar(imu1,ax=ax[1])
EN

回答 1

Stack Overflow用户

发布于 2022-09-19 08:44:05

以下是我想做的事:

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np

# How to get a colorbar from an axis?

nrows = 1
ncols = 2
nstep = 10

fig, ax = plt.subplots(nrows=nrows,ncols=ncols)

cb0 = None
cb1 = None

for istep in range(nstep):
    data = np.random.random(size=(5,5))+istep
    imu0 = ax[0].pcolormesh(data)
    imu1 = ax[1].pcolormesh(data)

    if ax[0].collections[0].colorbar is None:
        cb0 = plt.colorbar(imu0,ax=ax[0])
    else:
        ax[0].collections[0].colorbar.update_normal(imu0)
        
    if ax[1].collections[0].colorbar is None:
        cb1 = plt.colorbar(imu1,ax=ax[1])
    else:
        ax[1].collections[0].colorbar.update_normal(imu1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73768819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档