首页 > 解决方案 > 如何从 matplotlib 中的“ax”返回“ScalarMappable”?

问题描述

Figure.colorbar(mappable=...)有一个参数来接受可着色的项目,例如AxesImage,ContourSet等。考虑到这一点,通常的用法如下:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable


ax = plt.subplot()
im = ax.imshow(np.arange(100).reshape((10, 10)))

# create an axes on the right side of ax. The width of cax will be 5%
# of ax and the padding between cax and ax will be fixed at 0.05 inch.
divider = make_axes_locatable(ax)
cax = divider.append_axes("right", size="5%", pad=0.05)

plt.colorbar(im, cax=cax)

在此处输入图像描述

在上面的示例中,可映射im对象由 . 返回imshow(),在大多数情况下,我认为这很好。我的问题是我们如何ax在实现ax.imshow()orax.pcolormesh()之后直接返回 mappable ,它应该如下所示。

ax.imshow(np.arange(100).reshape((10, 10)))
def get_mappable(ax):
    pass

mappable = get_mappable(ax)

ax.images不是我想要的,因为这只是一种类型的映射。

我回顾了一些源代码plt.colorbar(),它使用gci()here),但我尝试并返回None,我想我一定错过了一些重要的东西。请给我一些指导,非常感谢。

编辑:我在这里找到了答案,但它与方法非常相似ax.images

标签: pythonpython-3.xmatplotlib

解决方案


推荐阅读