我知道,R装有自动一些调色板,如palette,rainbow,heat.colors和gray.我也知道RColorBrewer.但是,如果我想使用自定义调色板并按名称指定颜色,该怎么办?那可能吗?
我公司的调色板如下:
#1A73BA (R: 26 G: 115 B: 186) - this is a blue
#FFDB43 (R:255 G:219 B:67) - this is a yellow
#B54B05 (R:181 G:75 B:5) - this is an orange
Run Code Online (Sandbox Code Playgroud)
我公司的名字缩写是AT.
我希望能够通过名称而不是HEX或RGB来调用这些颜色,因为我不记得它们.理想情况下,我可以创建一个自动加载到R中的文件来启动这些颜色.
ATBlue <- #1A73BA
ATYellow <- #FFDB43
ATOrange <- #B54B05
Run Code Online (Sandbox Code Playgroud)
然后,我可以调用颜色:
plot(x,y, col = "ATBlue")
Run Code Online (Sandbox Code Playgroud)
我可以将值放入数据帧,然后像这样调用它们:
ATColors <- data.frame(name = c("ATBlue", "ATYellow", "ATOrange"), color= c("#1A73BA", "#F7D364", "#B54B05"))
plot(x,y, col = ATColors[3,2])
Run Code Online (Sandbox Code Playgroud)
但我需要知道数据框中的位置才能正确调用它.
我可以创建一个元素,当R启动时会自动加载,这样我就可以将自定义颜色名称调用到图中吗?
42-*_*42- 14
这回答(或至少是一个可能的答案)您的评论和编辑:
ATblue <- rgb(26/255, 115/255, 186/255, 1)
ATyellow <- rgb(255/255, 219/255, 67/255, 1)
ATorange <- rgb(181/255, 75/255, 5/255, 1)
plot(1:10, col= c(ATblue, ATyellow, ATorange), pch=20)
Run Code Online (Sandbox Code Playgroud)
使用rgb的定义方法允许您设置alpha级别,从而允许支持它的图形设备的透明度(至少:'pdf','windows','quartz'和'X11').
你也可以命名'palette-vector'
palvec <- c(ATblue=ATblue, ATyellow=ATyellow, ATorange=ATorange)
Run Code Online (Sandbox Code Playgroud)
可以使用数字或名称访问该向量:
plot(1,1) # to set up plot window
abline(h=c(0.8,1,1.2), col= palvec[ c( 'ATblue', 'ATyellow', 'ATorange' ) ] , lwd=40)
Run Code Online (Sandbox Code Playgroud)
一般来说,我认为你会发现,如果你使用全部小写,那么基本和图形包(默认加载,因此不需要重命名)与gif-list会有很好的对应关系.所以它已经是R的一部分了.假设您想要找到"LavenderBlush"的R颜色名称.分配的颜色名称的向量是从colors()返回的,但它相当大,所以你可以用以下方法减少它:
grep("lavender", colors(), ignore.case=TRUE, value=TRUE)
#[1] "lavender" "lavenderblush" "lavenderblush1" "lavenderblush2"
# "lavenderblush3" "lavenderblush4"
Run Code Online (Sandbox Code Playgroud)
并且说你想看看那个颜色的Hex代码是否与你不可读的gif表上的代码相同:
ccodes <- as.hexmode( c(256^(2:0) %*% col2rgb("lavenderblush")) )
ccodes
#[1] "fff0f5"
Run Code Online (Sandbox Code Playgroud)
是的.而对于你的例子,只需使用"seagreen":
> ccodes <- as.hexmode( c(256^(2:0) %*% col2rgb("seagreen")) )
> ccodes
[1] "2e8b57
Run Code Online (Sandbox Code Playgroud)
如果你有一个十六进制代码值,你可以用它附加"#" paste0:
paste0("#", ccodes)
#[1] "#2e8b57"
plot(1,1, col=paste0("#", ccodes) )
Run Code Online (Sandbox Code Playgroud)
如果你有这样的值的向量,paste0也是矢量化:
ccodes <- as.hexmode( c(256^(2:0) %*% col2rgb(colors()[20:25])) )
paste0("#", ccodes)
#[1] "#ffe4c4" "#eed5b7" "#cdb79e" "#8b7d6b" "#000000" "#ffebcd"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23682 次 |
| 最近记录: |