考虑一个包含浮点数的变量x。我想使用matplotlib的colormap将此数字映射到颜色,但不绘制任何内容。 基本上,我希望能够选择例如mpl.cm.autumn的colormap,使用mpl.colors.Normalize(vmin = -20,vmax = 10)设置范围,然后将x映射到相应的颜色。 但我真的不理解mpl.cm的文档,如果有人能给我一些提示就好了。
这就像是cm.hot(0.3)
一样简单:
import matplotlib.cm as cm
print(cm.hot(0.3))
(0.8240081481370484, 0.0, 0.0, 1.0)
如果您也想要使用规范化器,请使用
import matplotlib as mpl
import matplotlib.cm as cm
norm = mpl.colors.Normalize(vmin=-20, vmax=10)
cmap = cm.hot
x = 0.3
m = cm.ScalarMappable(norm=norm, cmap=cmap)
print(m.to_rgba(x))
(1.0, 0.8225486412996345, 0.0, 1.0)
通过在0到1之间提供一个参数,例如cm.autumn(0.5)
,可以从colormap中获取颜色。
如果游戏中存在Normalization实例,请使用Normalization的返回值:
import matplotlib.cm as cm
from matplotlib.colors import Normalize
cmap = cm.autumn
norm = Normalize(vmin=-20, vmax=10)
print cmap(norm(5))
将数字值转换为彩色地图颜色
import matplotlib.cm as cm
import matplotlib as matplotlib
def color_map_color(value, cmap_name='Wistia', vmin=0, vmax=1):
# norm = plt.Normalize(vmin, vmax)
norm = matplotlib.colors.Normalize(vmin=vmin, vmax=vmax)
cmap = cm.get_cmap(cmap_name) # PiYG
rgb = cmap(norm(abs(value)))[:3] # will return rgba, we take only first 3 so we get rgb
color = matplotlib.colors.rgb2hex(rgb)
return color