首页 > 解决方案 > 具有稳定值的 Matplotlib 颜色映射映射

问题描述

感谢帮助。

这是问题:

我有一些地震强度值(1、2、3、4、5、5.5、6、6.5、7 共 9 个级别),我也有 9 种颜色的颜色图。

    color_map = [
        '#f3f3f3',
        '#1aff1a',
        '#ffff00',
        '#ff8900',
        '#ff5500',
        '#b64100',
        '#993300',
        '#aa3c00',
        '#800080'
]
cm = matplotlib.colors.ListedColormap(color_map)

draw_area.plot("Intensity", ax=axes, cmap=cm, legend=True) #it suppose to be mapped by "Intensity" values

并且发生了两个案例

情况 1:如果我有很多“不同”的“强度”值,例如 1、2、3、4、5、6、6.5、7,那么我的地图就会出现很多这样的颜色。 情况1

情况2:如果我有很多“强度”的“相同”值,例如 4、4、4、4、4 或 5、5、5、5、5,而不是我的地图不会映射颜色图,它会以相同的颜色出现.(由第一种颜色映射的所有区域#f3f3f3) 情况2

我想将颜色“一个值映射到一种颜色”,如何解决这个问题?(如果我得到 2、2、2、2,这些区域假设由 #1aff1a 映射)

感谢帮助!

标签: pythonmatplotlibmappinggeopandascolormap

解决方案


我找到了解决这种情况的方法,我需要使用绝对值来映射颜色。

所以我修复了代码,它可以工作!

这是代码:

cmap, norm = matplotlib.colors.from_levels_and_colors(cLevel, color_map, extend="max")

使用 from_levels_and_colors 获取绝对映射。


推荐阅读