How to map number to color using matplotlib's colormap?

后端 未结 3 978
清酒与你
清酒与你 2020-12-12 16:09

Consider a variable x containing a floating point number. I want to use matplotlib\'s colormaps to map this number to a color, but not plot anything. Basically,

相关标签:
3条回答
  • 2020-12-12 16:50

    You can get a color from a colormap by supplying an argument between 0 and 1, e.g. cm.autumn(0.5).

    If there is a normalization instance in the game, use the return of the Normalization instead:

    import matplotlib.cm as cm
    from matplotlib.colors import Normalize
    
    cmap = cm.autumn
    norm = Normalize(vmin=-20, vmax=10)
    print cmap(norm(5))
    
    0 讨论(0)
  • 2020-12-12 16:53

    It's as simple as cm.hot(0.3), which returns (0.82400814813704837, 0.0, 0.0, 1.0).

    A full working program could read

    import matplotlib.cm as cm
    
    print(cm.hot(0.3))
    

    If you also want to have the normalizer, use

    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))
    
    0 讨论(0)
  • 2020-12-12 16:55

    Number value to colormap color

    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
    
    0 讨论(0)
提交回复
热议问题