Numpy 使用非';映射中的t

Numpy 使用非';映射中的t,numpy,matplotlib,Numpy,Matplotlib,我正在尝试创建一个包含多个子地块的图形。对于每个子批次,我将设置facecolor。我想在左边提供一个颜色栏,它提供我设置的面部颜色。然而,我已经找到了实现这一点的唯一方法,包括一个我不想要的映射 此外,我认识到这可能是一个XY问题。我愿意接受批评和任何方法来达到我的最终目标 [MCVE] 我想要这个 颜色栏需要在数字和颜色之间使用一些映射。但是,如果您不想在图形内部显示该映射,则可以使用最通用的方式创建该映射,即使用ScalarMappable实例 import matplotlib.pyp

我正在尝试创建一个包含多个子地块的图形。对于每个子批次,我将设置
facecolor
。我想在左边提供一个颜色栏,它提供我设置的面部颜色。然而,我已经找到了实现这一点的唯一方法,包括一个我不想要的
映射

此外,我认识到这可能是一个XY问题。我愿意接受批评和任何方法来达到我的最终目标

[MCVE]

我想要这个


颜色栏需要在数字和颜色之间使用一些映射。但是,如果您不想在图形内部显示该映射,则可以使用最通用的方式创建该映射,即使用
ScalarMappable
实例

import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np

np.random.seed([3, 1415])

a = np.random.rand(3, 3)

f, axes = plt.subplots(3, 3)

jet = cm.jet

for i in range(3):
    for j in range(3):
        axes[i, j].set_facecolor(jet(a[i, j]))

m = cm.ScalarMappable(cmap=jet)
m.set_array([])
plt.colorbar(m, ax=axes)

plt.show()

如果游戏中有一个标准化,例如,
norm=plt.Normalize(-1,2)
,您可以使用它获得正确的颜色,如
jet(norm(a[i,j]))
,并创建可映射为
cm.ScalarMappable(cmap=jet,norm=norm)

plt.colorbar(m,ax=axs)
正在生成错误
AttributeError:'numpy.ndarray'对象没有属性“get\u figure”
。这可能是版本问题吗?我的
np
'1.13.1'
mpl
'2.0.2'
,Python
3.6
。是的,我可以在matplotlib 2.0.2中重现错误。代码在版本2.2.2中运行良好。如果无法更新matplotlib,则需要将轴数组转换为列表,
plt.colorbar(m,ax=axes.flatte().tolist())
。已升级并修复。
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np

np.random.seed([3, 1415])

a = np.random.rand(3, 3)

f, axes = plt.subplots(3, 3)

jet = cm.jet

for i in range(3):
    for j in range(3):
        axes[i, j].set_facecolor(jet(a[i, j]))

m = cm.ScalarMappable(cmap=jet)
m.set_array([])
plt.colorbar(m, ax=axes)

plt.show()