假設我為 R 提供了一個顏色名稱'#023e8a'
現在我想獲得 5 個以下顏色名稱,其 alpha 值為c(0.8, 0.6, 0.5, 0.3, 0.2),它們將ggplot作為fill美學傳遞給。
是否有任何功能可用于R或ggplot實作這一目標?我知道ggplot我可以在任何圖層中傳遞 alpha 值,但我想獲得顏色陰影的特定名稱。
任何指標將不勝感激。
uj5u.com熱心網友回復:
獲得應用了 alpha 的顏色“名稱”的一種選擇是使用scales::alpha.
library(ggplot2)
library(scales)
dat <- data.frame(
x = LETTERS[1:5],
y = 1:5
)
ggplot(dat, aes(x, y, fill = x))
geom_col()
scale_fill_manual(values = scales::alpha('#023e8a', c(0.8, 0.6, 0.5, 0.3, 0.2)))

如果不添加透明度,您只想要不同的顏色深淺,那么也許colorspace::lighten更合適:
ggplot(dat, aes(x, y, fill = x))
geom_col()
scale_fill_manual(values = colorspace::lighten('#023e8a', 1 - c(0.8, 0.6, 0.5, 0.3, 0.2)))

uj5u.com熱心網友回復:
您可以使用scales::alpha:
library(scales)
alpha("#023e8a", c(0.8, 0.6, 0.5, 0.3, 0.2))
#[1] "#023E8ACC" "#023E8A99" "#023E8A80" "#023E8A4C" "#023E8A33"
uj5u.com熱心網友回復:
其他答案很好,我會使用它們。
但是,如果您嘗試減少包依賴性,您可以創建一個函式,將每個縮放的 alpha 值的十六進制值附加到顏色代碼:
append_alpha <- function(color, alpha) {
alpha_scaled <- round(alpha*255)
alpha_hex <- as.hexmode(alpha_scaled)
color_with_alpha <- paste0(color, alpha_hex)
return(color_with_alpha)
}
alpha_values <- c(0.8, 0.6, 0.5, 0.3, 0.2)
append_alpha("#023e8a", alpha_values)
# "#023e8acc" "#023e8a99" "#023e8a80" "#023e8a4c" "#023e8a33"
如果您正在減少依賴項,因為您正在構建其他人將使用的代碼,您將需要為空白字串、無效顏色等添加一些錯誤處理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/523489.html
