to_rgba
州的文档:
注意:此方法假定输入表现良好;它没有检查 对于异常,例如x是掩蔽的rgba数组,或者是整数 类型不是uint8,或者是浮点rgba数组 超出0-1范围的值。
但这正是我所需要的:一个蒙面的rgba数组。以下内容改编自this post,并为我提供了正确的值,但nan
的值(我在第一行显示为零)应为spc_map_color
中的黑色rgba值
spc_map[np.isnan(spc_map)] = 0
gradient_range = matplotlib.colors.Normalize(-1.0, 1.0)
cmap = matplotlib.cm.ScalarMappable(
gradient_range, self.cm_type)
spc_map_color = cmap.to_rgba(spc_map, bytes=True)
正如您所看到的,使用的colourmap是可变的,但是为掩码之外的值(即nan
)返回的rgba值应该是不变的,即总是黑色。
linearsegmentedcolourmap
个对象的解答如果存在here和here。但是,如果要使用imshow
输出图像,则会执行此操作。我不想那样做。我想要一个数组中的rgba值。
我在转换为rgba之前尝试使用cmap.set_bad(color='black')
cmap作为我的ScalarMappable
,但ScalarMappable
没有set_bad
函数。
我错过了一些明显的东西?
你可以使用
spc_map = np.random.randn(256,256)
然后做一些事情,例如将所有值设置为零以下,以测试您可能拥有的解决方案
答案 0 :(得分:0)
黑色通常对应于RGBA阵列中的[0,0,0,1]。因此,只需将所有蒙版位置设置为事后的这些值。
# get mask of masked array
mask = spc_map.mask
# RGBA array should have one more dimension than spc_map with length 4
spc_map_color[mask] = np.array([0, 0, 0, 1])