python - Matplotlib:颜色图可以暗示不同的默认规范化吗?

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

最佳答案

恐怕简短的回答是:不。

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

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

* 此规则有一个异常(exception) - 有时您希望将 索引 到颜色映射中,因此我相信在这种情况下,规范会返回字节,然后用于按索引访问颜色在颜色图中。

抱歉,答案不是肯定的 :-)

关于python - Matplotlib:颜色图可以暗示不同的默认规范化吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8529316/

相关文章:

python - 如何在 matplotlib_venn 中将维恩图保存为 .png 文件

python - 如何处理 django 模型中的模型通用属性?

python - Pytables。如何迭代唯一值?

python - 使用 matplotlib 和 selenium 绘制实时图

python - 根据颜色图在条形图中的 y 值

python - 使用 matplotlib 和 imshow 平滑二维直方图

python - 如何将 groupby() 和 value_counts() 变成多个饼图/条形图

python - 如何从 Perl 导入和调用 Python 函数?

python - 在python nltk中计算n-gram频率

python - AttributeError: 模块 'h11' 没有属性 'Event'