Matplotlib:颜色映射是否意味着不同的默认归一化?



我有如下的颜色图:

import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap, NoNorm
mycmap_dict = {
    'red': (
            (-2.0, 1.0, 1.0),
            (-1.0, 0.0, 1.0),
            ( 0.0, 0.0, 0.0),
            ( 1.0, 1.0, 0.0),
            ( 2.0, 1.0, 1.0),
        ),
    'green': (
            (-1.0, 0.0, 1.0),
            ( 0.0, 0.0, 0.0),
            ( 1.0, 1.0, 1.0),
            ( 2.0, 0.0, 0.0),
        ),
    'blue': (
            (-2.0, 0.0, 0.0),
            (-1.0, 1.0, 1.0),
            ( 0.0, 0.0, 0.0),
            ( 1.0, 0.0, 1.0),
        )
    }
my_cmap = LinearSegmentedColormap('my', mycmap_dict)
plt.register_cmap(cmap=my_cmap)
my_norm = NoNorm()

由于颜色映射是基于[-2.0,2.0]而不是[0.0,1.0]范围内的数据,因此使用默认的规范化是没有意义的。我想能够说"使用my_cmap时默认使用my_norm"——这是可能的吗?

恐怕简短的回答是:不。

为了在自定义颜色映射和规范化之间获得最佳的可插入性,我强烈建议您遵守规则:

  • Norm获取数据并转换为0-1*
  • Cmap接受0-1范围内的浮点数并转换为RGBA值

*此规则有一个例外-有时你想要索引到colormap中,所以我相信有一种情况,规范返回字节,然后用于通过索引在colormap中访问颜色。

对不起,答案不是"是":-)

最新更新