Python 如何从matplotlib中的“ax”返回“ScalarMappable”?
Python 如何从matplotlib中的“ax”返回“ScalarMappable”?,python,python-3.x,matplotlib,Python,Python 3.x,Matplotlib,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((1
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.imshow()
或ax.pcolormesh()
后,如何直接从ax
返回mappable,如下所示
ax.imshow(np.arange(100).reshape((10, 10)))
def get_mappable(ax):
pass
mappable = get_mappable(ax)
ax.images
不是我想要的,因为这只是一种映射类型
我回顾了plt.colorbar()
中的一些源代码,它使用了gci()
(),但我尝试了,它返回了None
,我想我一定错过了一些重要的东西。请给我一些指导,非常感谢
编辑:
我找到了答案,但它与
ax.images
方法非常相似。一个可能的障碍是ax
可以有多个与ScalarMapable兼容的元素。通常,访问ScalarMapable的原因是创建一个颜色条。当有多个这样的元素时,该函数应该指向什么?全部归还(可能是一个巨大的列表)?或者试着找出它们是否会导致相同的色条?或者…?嗨,是的,但是我们可以返回当前可映射的。gcf()中的类似概念。似乎在源代码中,他们使用gci(),但我尝试了,它没有返回任何。。。请我们使用gci(),我想可以。谢谢你的回复。