微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有稳定值的 Matplotlib 颜色图映射

如何解决具有稳定值的 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,那么我的地图就会出现许多这样的颜色。

Situation1

情况 2: 如果我得到许多“强度”的“相同”值,例如 4、4、4、4、4 或 5、5、5、5、5,那么我的地图将不会映射颜色图,它会显示相同的颜色。(由第一种颜色映射的所有区域 #f3f3f3)

Situation2

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

感谢您的帮助!

解决方法

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

所以我修复了代码,它有效!

代码如下:

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

使用 from_levels_and_colors 获得绝对映射。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。