如何在matplotlib色彩映射中重新定义特定值的颜色

otm*_*ger 23 python matplotlib color-mapping

我想rainbow在图像中使用色彩映射imshow.它工作得很好,但我想重新定义价值的颜色0.我想用白色而不是暴力.

我想只为零值执行此操作,所有其他值可以保留在colormap中的默认值.

任何想法如何做到这一点,无需手动编辑色彩映射?

tac*_*ell 32

你也可以使用set_under我认为比使用更具语义意义的东西set_bad

my_cmap = matplotlib.cm.get_cmap('rainbow')
my_cmap.set_under('w')
imshow(np.arange(25).reshape(5, 5),
       interpolation='none',
       cmap=my_cmap,
       vmin=.001)
Run Code Online (Sandbox Code Playgroud)

您可以调整颜色条以使用kwarg显示"under"(以及对称"over")颜色extend,请参阅示例文档.

有关更完整示例的副本的答案,请参阅如何创建专门处理一个值的matplotlib色彩映射?

  • cmap = copy.deepcopy(cm.get_cmap(...))在2.1中无需使用深层复制即可使用。 (2认同)