Matplotlib:色彩映射是否意味着不同的默认规范化?

时间:2011-12-16 03:07:34

标签: python 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” - 这可能吗?

1 个答案:

答案 0 :(得分:0)

我担心简短的回答是:不。

为了获得自定义色彩映射和规范化之间的最佳插值效果,我强烈建议您遵守规则:

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

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

对不起答案不是: - )