gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 04:11:53 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com