繁体   English   中英

R:为定义的用户调色板中的值向量分配适当的颜色

[英]R: assign appropriate color to a vector of values from a defined user palette

我有一个数字向量和一个调色板,如下所示。

我不想制作任何类型的 plot,我唯一想要的就是根据调色板为每个数值分配适当的颜色......

所需的 output 将是将值与 colors 相关联的数据帧。 有没有简单的方法来做到这一点?

my_palette <- grDevices::colorRampPalette(c("green","black","red"))(11)
my_vector <- c(runif(150,1,10))
my_df <- data.frame(value=my_vector, color=my_palette[1])


> head(my_df)
     value   color
1 4.029890 #00FF00
2 1.933029 #00FF00
3 4.921888 #00FF00
4 5.467826 #00FF00
5 9.232608 #00FF00
6 7.353821 #00FF00

你可以使用cut

ncolors <- 11
my_palette <- grDevices::colorRampPalette(c("green","black","red"))(ncolors)

my_df <- data.frame(value=my_vector, color=my_palette[cut(my_vector,ncolors)])

head(my_df)

     value   color
1 1.289565 #00FF00
2 3.651295 #006500
3 4.750783 #003200
4 6.506106 #330000
5 5.615058 #000000
6 3.216121 #009900

主题的变体:

my_palette <- grDevices::colorRampPalette(c("green","black","red"))(11)
set.seed(123)
my_vector <- c(runif(150,1,10))

my_df <- data.frame(value = my_vector,
                    color = cut(my_vector, 11, labels = my_palette))
head(my_df)
#>      value   color
#> 1 3.588198 #006500
#> 2 8.094746 #990000
#> 3 4.680792 #003200
#> 4 8.947157 #CC0000
#> 5 9.464206 #FF0000
#> 6 1.410008 #00FF00

代表 package (v2.0.0) 于 2021 年 4 月 30 日创建

您肯定走在一条可以带您到达那里的道路上:


library(spatstat)

set.seed( 100 )
my_palette <- grDevices::colorRampPalette(c("green","black","red"))(11)
my_vector <- c(runif(150,1,10))
cmap <- colourmap( my_palette, range=range(my_vector) )

my_df <- data.frame(value=my_vector, color= cmap( my_vector ) )


> head( my_df )
     value   color
1 3.769895 #006500
2 3.319053 #009900
3 5.970902 #330000
4 1.507448 #00FF00
5 5.216944 #000000
6 5.353937 #000000

另请参阅此答案

您可以使用colorRamp代替colorRampPalette ,它返回将区间 [0,1] 映射到 colors 的 function。

myPalette <- colorRamp(c("green","black","red"))

Map 你的值到区间 [0,1]:

my_vector_normalized <- (my_vector - min(my_vector)) / (max(my_vector) - min(my_vector))

然后:

my_df <- data.frame(value = my_vector, color = myPalette(my_vector_normalized))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM