为 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)
似乎可行。不过我很难说,因为所有的颜色看起来都非常相似(五度灰...)
我有 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)
似乎可行。不过我很难说,因为所有的颜色看起来都非常相似(五度灰...)