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'
,Python3.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()