为 3d 散点图中的各个点指定特定的十六进制颜色

Specifying a specific hex color for individual points in a 3d scatter plot

我有 LiDAR 数据集,我从光栅中提取了 RGB-NIR 颜色。我可以毫无问题地生成我想要制作的 3d 图,或者根据一维值列(例如 NDVI)为图着色;但我有兴趣根据我写入其中一列(取自光栅)的 RGB 十六进制代码为点着色,但我似乎无法找到将其写入色彩空间的方法。虽然我可以调用各个十六进制代码,但它将它们视为因素而不是颜色规范。我发现我可以做的是 a) 指定定性颜色,或 b) 应用色带。我似乎找不到将 RGB 色彩空间应用于数据的方法。

有没有办法在 data.frame(在 R 中工作)中指定一个列,该列具有与 plotly 散点图中每个单独点相关联的十六进制或 RGB 代码?制作 3 色 (R-G-B) 色带并将颜色映射到它是我唯一的选择吗?有什么方法可以将 RGB 颜色添加到绘图标记中吗?

stack.exa<-data.frame(X= c(470219.59,470203.74,470215.49,470218.41,470214.88),
                  Y= c(5013443.99,5013439.34,5013432.39,5013437.72,5013436.6),
                  Z= c(645.62,629.83,638.78,617.32,639.54),
                  R= c(49,88,69,68,64),
                  B= c(76,134,102,97,96),
                  G= c(69,91,78,75,79),
                  HEX=c("#314545","#585B5B","#454E4E","#444B4B","#404F4F"))
trace.test<-plot_ly(stack.exa,
             x = ~X, y = ~Y, z = ~Z,
             color=~HEX,
             marker=list(
                         size = 20,
                         line = list(color = 'rgba(0, 0, 0, 0)',
                                     width = 0)
                         )
            )

根据?plot_ly()

color (...) To avoid scaling, wrap with I()

将您的代码修改为 color =~ I(HEX) 似乎可行。不过我很难说,因为所有的颜色看起来都非常相似(五度灰...)