python - 根据另一个列表中的值创建相应的 RGB 列表(颜色图)

标签 python list matplotlib rgb colormap

我正在使用 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 值。

最佳答案

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()
enter image description here
> 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.        ]])

关于python - 根据另一个列表中的值创建相应的 RGB 列表(颜色图),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61585101/

相关文章:

python - 检查 numpy 矩阵中特定元素的值

python - 在python中组合两个字符串

python - 在连续的绘图命令期间关闭自动颜色循环

python - 如果实体重复,如何绘制断条

java - 如何在java中硬拷贝List<List<>>?

python - 使用 MatPlotLib 绘制连续数据流

python - 如何获取某个.py文件中定义的所有函数?

python - 我想从字典中得到两个最小的数字

javascript - scrapy填写POST表单

C# - 当用于添加项目的临时值发生变化时,列表中的项目也会发生变化