我如何使用预定义比例尺(如从
library(“viridis”)
中的 viridis )在r中创建一个颜色比例尺函数?问题不是如何在 ggplot 中使用它,而是如何构建一个可以将指定值域内的任意值输入到其中并检索相应颜色字符串(rgb,hex或任何其他输出格式)的函数。似乎colorRamp
和colorRampPalette
仅在给定颜色空间内在2种颜色之间进行插值。但是例如,我该如何使用 viridis ?感谢@sconfluentus的答案,我编写了以下函数,它可以实现我想要的功能(无安全检查):library("viridis")
number_vector <- c(0.772, 1.235, 5.78, 8.890, 10.543, 14.702)
map_viridis <- function(vec, num) {
vector_expanded <-round(vec, 1) * 10 # expand to allow for decimal precision
vector_exp_range <- max(vector_expanded) - min(vector_expanded)
colour_vector <- viridis(vector_exp_range + 1) # get vector of colour values for all possible decimals between min and max value
value_to_colour <- colour_vector[num * 10 - min(vector_expanded) + 1] # retrieve colour value for number
return(value_to_colour)
}
map_viridis(number_vector, 0.8) # returns "#440154FF"
map_viridis(number_vector, 3.4) # returns "#424086FF"
map_viridis(number_vector, 14.7) # returns "#FDE725FF"
想知道是否有更直接的方法来实现这个结果?
begin
和end
参数吗?例如,使用scale_fill_viridis(option = "C", begin = .2, end = .9)
。你想要一个函数来随机选择这些值吗? - Tunn