【问题标题】:Create corresponding RGB list (colormap) based on values in another list根据另一个列表中的值创建相应的 RGB 列表(颜色图)
【发布时间】:2021-05-11 15:22:38
【问题描述】:

我正在 python 中使用 3D 点云着色。

基本上,我有一个点列表,每个点都有一定的深度(距离)值。我想根据这个距离值创建一个对应的 RGB 列表值。

10 分示例:

distance_list = [0.1, 0.3, 0.4, 0.5, 1.2, 6, 8.1, 0.9, 5, 0.7]

我想要的是红色和蓝色或任何其他 2 种颜色之间的 RGB 值(颜色图)列表,这些值对应于距离,因此红色是最近的点,而蓝色是最远的点。

所以或多或少,我会有类似的东西

rgb_list = [(255, 0, 0), (R2, G2, B2), (R3, G3, B3), (R4, G4, B4), (R5, G5, B5), (R6, G6, B6), (0, 0, 255), (R8, G8, B8), (R9, G9, B9), (R10, G10, B10)]

我尝试使用 matplotlib 中现成的颜色图,但我无法根据我拥有的值对其进行自定义,并从中提取 RGB 值。

【问题讨论】:

    标签: python list matplotlib rgb colormap


    【解决方案1】:

    matplotlib 具有在 0 和 1 之间标准化的内置颜色图,但我们可以通过将颜色图标准化为 distance_list 的最小值和最大值来使颜色图符合您的数据。

    变量 color_list 包含您的距离对应的每种颜色(如果需要),您可以看到您的数据可以直接映射到颜色栏上的刻度线。

    import numpy as np
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    import matplotlib.cm as cm
    
    distance_list = [0.1, 0.3, 0.4, 0.5, 1.2, 6, 8.1, 0.9, 5, 0.7]
    
    min_val, max_val = min(distance_list), max(distance_list)
    
    # use the coolwarm colormap that is built-in, and goes from blue to red
    cmap = mpl.cm.coolwarm
    norm = mpl.colors.Normalize(vmin=min_val, vmax=max_val)
    
    # convert your distances to color coordinates
    color_list = cmap(distance_list)
    
    fig, ax = plt.subplots()
    cb = mpl.colorbar.ColorbarBase(ax, cmap=cmap, norm=norm, ticks = sorted(distance_list), orientation='horizontal')
    cb.set_label('Distance (least to greatest)')
    ax.tick_params(axis='x', rotation=90)
    
    plt.show()
    

    > color_list
    array([[0.34832334, 0.46571115, 0.88834616, 1.        ],
           [0.61931795, 0.74412073, 0.99893092, 1.        ],
           [0.75361062, 0.83023285, 0.96087116, 1.        ],
           [0.86742764, 0.8643766 , 0.86260246, 1.        ],
           [0.70567316, 0.01555616, 0.15023281, 1.        ],
           [0.70567316, 0.01555616, 0.15023281, 1.        ],
           [0.70567316, 0.01555616, 0.15023281, 1.        ],
           [0.83936494, 0.32185622, 0.26492398, 1.        ],
           [0.70567316, 0.01555616, 0.15023281, 1.        ],
           [0.96849975, 0.67397738, 0.55664926, 1.        ]])
    

    【讨论】:

      猜你喜欢
      • 2015-12-02
      • 2018-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-28
      • 2020-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多