Bootstrap

R语言---颜色选择和设置

在使用R绘图调色的时候,每次都要选择很久,有时候也会忘记相关的记录,特此总结一些自己常用的。

1、R base颜色版
1.1 R base颜色

R语言中颜色设置使用通用的颜色代码就行,RGB格式、16进制格式,或者使用相关的颜色字符。
参考下面的链接就可以选择颜色了,但是这个只有字符显示。

http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf

此外看到一个颜色很全的博客,记录了相关的颜色代码:

https://blog.csdn.net/bone_ace/article/details/47362619

在这里插入图片描述

我们调用多个颜色的时候可以使用rainbow():

plot(rep(1,50),col=rainbow(50), pch=19,cex=2)

在这里插入图片描述

1.2 R ggplot 默认颜色反转

ggplot默认配色及颜色翻转(reversed colors),scale_color_hue和scales包中的hue_pal()(n)

library(gridExtra) ## 排版图片
library(ggplot2) ## ggplot绘图
library(scales) ## 调用hue_pal函数

## 参考
https://stackoverflow.com/questions/45868625/how-to-reverse-the-default-color-palette-for-ggplot2
## 下面两个效果一样,默认scale_color_hue(direction = 1)
p1 <- ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species))+
  geom_point(size=2) + theme_bw()
p2 <- ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species)) +
  geom_point(size=2) + theme_bw() + scale_color_hue(direction = 1)
 ## direction = -1 会使颜色反过来. 
## 需要调整起始点使得反过来颜色顺序一致,使用 h.start=90
p3 <- ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species))+
  geom_point(size=2)+  scale_color_hue(direction = -1, h.start=90) + theme_bw()


# Get the colors with 3 classes
cols <- hue_pal()(3)  

# Plot the data and reverse the color
p4 <- ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species)) +
  geom_point(size=2) + scale_color_manual(values = rev(cols)) + theme_bw()

grid.arrange(p1, p2,p3,p4, 
             ncol = 2, nrow = 2)

从图中可以看出,上面连个图的颜色设置与下面的设置相反,默认base R中的颜色反转使用rev(cols)即可。
在这里插入图片描述

2、R颜色包RColorBrewer

其实,上面的颜色已经可以满足我们的颜色选择需求,但是在选择颜色配对时,我们可能不会搭配,导致图片视觉诡异。
因此,使用一些开发好的主题更为明智:

library(RColorBrewer)
par(mar=c(3,4,2,2))
display.brewer.all()
br_pal <- brewer.pal(11,"RdYlBu")  ## 提取某个颜色的颜色值
br_pal
[1] "#A50026" "#D73027" "#F46D43" "#FDAE61" "#FEE090" "#FFFFBF" "#E0F3F8" "#ABD9E9" "#74ADD1"
[10] "#4575B4" "#313695"

下图的三个颜色集合分别对应:sequential、qualitative、diverging
在这里插入图片描述

此外这些颜色可以在交互网站colorbrewer2中寻找,网站colorbrewer2(https://colorbrewer2.org)也包含以下三种不同的模式(sequential、qualitative、diverging),有不同的选项来查询选择颜色代码。
使用时,也可以查看下面的链接:

http://rstudio-pubs-static.s3.amazonaws.com/5312_98fc1aba2d5740dd849a5ab797cc2c8d.html

此外,下面是也是一个R包可以选择,但是这个很依赖自己选择,输入下面的命令,会出现可点击的选择框,不太方便。

library("colorspace")
pal <- choose_palette()

在这里插入图片描述

3、R颜色包wesanderson、viridis、ggsci
3.1 wesanderson package
## github地址
https://github.com/karthik/wesanderson
require(wesanderson)
names(wes_palettes)
 [1] "BottleRocket1"  "BottleRocket2"  "Rushmore1"      "Rushmore"       "Royal1"        
 [6] "Royal2"         "Zissou1"        "Darjeeling1"    "Darjeeling2"    "Chevalier1"    
[11] "FantasticFox1"  "Moonrise1"      "Moonrise2"      "Moonrise3"      "Cavalcanti1"   
[16] "GrandBudapest1" "GrandBudapest2" "IsleofDogs1"    "IsleofDogs2"

col = wes_palette("Zissou1", 10, type = "continuous")

height = 1:10
barplot(height, border = "white",col=wes_palette("Zissou1", 10, type = "continuous"),space = 0)

在这里插入图片描述

3.2 viridis package
## 参考链接
https://cran.r-project.org/web/packages/viridis/vignettes/intro-to-viridis.html
require(viridis)

下面是viridis包的几个颜色主题,可以作为普通的颜色list输入:
在这里插入图片描述

viridis(10) ## viridis 主题中提取10个颜色
inferno(10) ## inferno 主题中提取10个颜色
plot(1:10, col=viridis(10),cex=4,pch=20)

在这里插入图片描述
ggplot同样可以直接使用这个颜色主题scale_color_viridisscale_fill_viridis

p <- ggplot(mtcars, aes(wt, mpg))
p + geom_point(size=4, aes(colour = factor(cyl))) +
    scale_color_viridis(discrete=T,option = "inferno") +
    theme_bw()
3.3 ggsci package

ggsci应该是只有ggplot配色:

## 参考ggsci链接
https://cran.r-project.org/web/packages/ggsci/vignettes/ggsci.html
4、R函数生成多个连续色

有时候需要使用多个颜色,eg,50个颜色时候,,默认rainbow颜色不喜欢,这时候可以考虑函数生成。

4.1 wesanderson和viridis函数生成多个连续颜色
require(wesanderson)
wes_palette("Zissou1", 5, type = "discrete")
wes_palette("Zissou1", 50, type = "continuous")

![在这里插入图片描述](https://img-blog.csdnimg.cn/4731d523db2f4a4b86361564a2a70c87.png

require(viridis)
viridis(50)
 [1] "#440154FF" "#46085CFF" "#471064FF" "#48176AFF" "#481F70FF" "#482576FF" "#472C7AFF" "#46337EFF"
 [9] "#443983FF" "#423F85FF" "#404588FF" "#3E4A89FF" "#3C508BFF" "#39568CFF" "#365C8DFF" "#34618DFF"
[17] "#31668EFF" "#2F6B8EFF" "#2D718EFF" "#2B758EFF" "#297A8EFF" "#277F8EFF" "#25848EFF" "#23898EFF"
[25] "#218E8DFF" "#20928CFF" "#1F978BFF" "#1E9D89FF" "#1FA187FF" "#21A685FF" "#25AB82FF" "#29AF7FFF"
[33] "#30B57CFF" "#38B977FF" "#40BD72FF" "#4AC16DFF" "#55C568FF" "#5FCA61FF" "#6BCD5AFF" "#77D153FF"
[41] "#84D44BFF" "#91D742FF" "#9FDA3AFF" "#ACDC30FF" "#BADE28FF" "#C8E020FF" "#D6E21AFF" "#E4E419FF"
[49] "#F1E51DFF" "#FDE725FF"
barplot(rep(50,50),col=viridis(50),space=0,border = viridis(50))

在这里插入图片描述

4.2 使用colorRampPalette获取多个连续颜色

上面的函数可以将一些diverged colors变换为多个连续的值,例如下面的RColorBrewer函数包中"Spectral"中仅为11个颜色最多,当使用到连续型pheatmap中时,这些颜色就不够用了。
此时,可以使用colorRampPalette函数。

## colorRampPalette函数为系统base R中的函数,可以直接调用的
colfunc<-colorRampPalette(brewer.pal(11,"Spectral"))
colfunc<-colorRampPalette(c("red","yellow","springgreen","royalblue")) 
plot(rep(1,50),col=(colfunc(50)), pch=19,cex=2)  ## 取50个颜色,颜色图片如下所示
color=colfunc(50) ## 取到50个连续变换色

在这里插入图片描述

以上仅记录。

  1. http://blog.csdn.net/bone_ace/article/details/47362619 (颜色大全)
  2. http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf (颜色大全)
  3. https://r-graph-gallery.com/38-rcolorbrewers-palettes.html (RColorBrewer)
  4. https://colorbrewer2.org/#type=qualitative&scheme=Set3&n=12(colorbrewer2网站)
  5. https://www.nceas.ucsb.edu/sites/default/files/2020-04/colorPaletteCheatsheet.pdf
  6. https://stackoverflow.com/questions/45868625/how-to-reverse-the-default-color-palette-for-ggplot2 (默认ggplot颜色反转)
;