69

x考虑一个包含浮点数的变量。我想使用 matplotlib 的颜色图将此数字映射到颜色,但不绘制任何内容。基本上,我希望能够选择颜色图,mpl.cm.autumn例如,用于mpl.colors.Normalize(vmin = -20, vmax = 10)设置范围,然后映射x到相应的颜色。但我真的没有得到 的文档mpl.cm,所以如果有人可以给我一个提示。

4

3 回答 3

113

它很简单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)
于 2013-02-28T16:04:50.683 回答
23

您可以通过提供 0 和 1 之间的参数来从颜色图中获取颜色,例如cm.autumn(0.5).

如果游戏中有规范化实例,则使用规范化的返回值代替:

import matplotlib.cm as cm
from matplotlib.colors import Normalize

cmap = cm.autumn
norm = Normalize(vmin=-20, vmax=10)
print cmap(norm(5))
于 2017-03-07T13:47:37.670 回答
3

颜色图颜色的数值

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
于 2020-07-08T16:18:53.930 回答