R语言可视化及作图3--图形颜色选取
R语言绘图系列:
R语言色彩丰富,有600多种颜色可供选择。
在这里介绍七种R语言图形颜色选取方法:
1. RcolorBrewer包;⚠️
2. paletteer包;⚠️
3. pallette函数;
4. 颜色生成器函数;
5. rgb函数;
6. hsv函数和hcl函数;
7. Colourpicker包
1. RcolorBrewer包
RcolorBrewer官网:https://www.r-graph-gallery.com/38-rcolorbrewers-palettes.html
- 1.1连续型
library(RColorBrewer)
display.brewer.all(type = 'seq') #查看包中的颜色(连续型)
age <- rnorm(100,45,10)
hist(age,col=brewer.pal(9,'BuGn')) #brewer.pal就是调色盘的意思,后面参数是从'BuGn'中选择9种颜色。
- 1.2 极端型
display.brewer.all(type = 'div')
age <- rnorm(100,45,10)
hist(age,col=brewer.pal(11,'PiYG'))
- 1.3 离散型
display.brewer.all(type = 'qual')
age <- rnorm(20:100,10)
hist(age,col=brewer.pal(10,'Pastel2'))
2. paletteer包
优点:
1. 使用简单,可以直接在控制台显示出颜色
2. 无缝对接ggplot❗️
2.1 安装:
install.packages("paletteer")
# install.packages("devtools")
# devtools::install_github("EmilHvitfeldt/paletteer")
library(paletteer)
2.2 使用:
paletteer支持两类配色:
paletteer_c
:连续型配色,映射颜色的那一列是一串连续的数据,最常见的连续型数据就是数值,举个栗子:
paletteer_d
:离散型配色,映射颜色的那一列有固定几个的取值,每个取值对应一个颜色。
离散型配色中还有个paletteer_dynamic
,即动态配色,就是说可以把一组颜色任意切分成n个颜色,取决于你想要多少种颜色,要多少就有多少。
下面是使用方法,将配色以十六进制编码的形式输出出来,成为一个自定义颜色时可直接使用的向量。并且这个输出在控制台上就显示了颜色,非常直观
paletteer_c("scico::berlin", n = 10)
## <colors>
## #9EB0FFFF #5AA3DAFF #2D7597FF #194155FF #11181DFF #270C01FF #501802FF #8A3F2AFF #C37469FF #FFACACFF
paletteer_d("RColorBrewer::Paired")
## <colors>
## #A6CEE3FF #1F78B4FF #B2DF8AFF #33A02CFF #FB9A99FF #E31A1CFF #FDBF6FFF #FF7F00FF #CAB2D6FF #6A3D9AFF #FFFF99FF #B15928FF
paletteer_dynamic("cartography::green.pal", 5)
## <colors>
## #B8D9A9FF #8DBC80FF #5D9D52FF #287A22FF #17692CFF
paletteer_dynamic("cartography::green.pal", 10)
## <colors>
## #C7E0B9FF #B1D2A4FF #9CC590FF #87B77BFF #70A965FF #54974AFF #38852FFF #257322FF #1B6122FF #125022FF
引号里是包名::配色名
,并不需要自己去查,直接按tab键即可
2.3 对接ggplot2
library(ggplot2)
ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) +
geom_point() +
scale_color_paletteer_d("basetheme::minimal")
ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Sepal.Width)) +
geom_point() +
scale_color_paletteer_c("grDevices::PinkYl")
这样的对接方式,基于ggplot2的所有R包都可以用了。比如ggpubr
2.4 对接其它R包
- pheatmap
pheatmap::pheatmap(volcano,color = paletteer_c("scico::berlin", n = 100))
- ComplexHeatmap
library(ComplexHeatmap)
Heatmap(t(iris[,1:4]),col = paletteer_c("scico::berlin", n = 100),name = "iris")
参考:https://github.com/EmilHvitfeldt/paletteer
3. pallette函数
pallette()函数仅有一个参数,该参数接受一个表示颜色的向量。如果不对该参数进行改变,其默认颜色为:
palette()
[1] "black" "#DF536B" "#61D04F" "#2297E6" "#28E2E5" "#CD0BBC" "#F5C710"
[8] "gray62"
当需要重制调色板时,可以对value参数进行更改。比如:palette(rainbow(7)),表示将调色板换成7种彩虹色。调色板用完之后其参数不会自动恢复默认,可以使用palette('default')恢复默认。或者和par函数一样,先将palette()赋给一个对象,最后再将这个对象释放出来。
4. 颜色生成器函数
函数 | 功能 | 用法 |
---|---|---|
rainbow() | 生成彩虹色 | rainbow(n,s=1,v=1,start=0,end=max(1,n-1)/n,gamma=1),n表示产生颜色个数,s和v分别表示颜色的饱和度和纯度。start和end表示设定彩虹色的子集,而颜色将从这个子集中选取,子集的分界线为:红色0;黄色1/6;绿色2/6;青色3/6,蓝色4/6;紫红色5/6。gamma参数表示gamma调整。 |
heat.colors() | 生成暖色 | 从红色渐变到黄色再到白色 |
terrain.colors() | 生成土色 | 从绿色渐变到黄色再变到棕色 |
topo.colors() | -- | 从蓝色渐变到青色再到黄色最后是棕色 |
cm.colors() | -- | 从青色到白色再到粉色 |
gray() 和 grey() | 生成灰色 | grey(level,alpha=NULL),level表示生成灰色的程度,0为纯白,1为纯黑,可接受一个向量,即产生一个从白渐变到黑的颜色向量。 |
5. rgb函数
rgb(red,green,blue,alpha,names=NULL,maxColorValue=1)
这个函数是red,green,blue的首字母组合。顾名思义,这个调色桶是基于红绿蓝三种颜色的混合。前三个参数表示要在这个调色桶中加入多少成分的红绿蓝,取值再0~maxColorValue之间。默认情况下,maxColorValue的值是1,因此前三个参数取值都在0~1之间,值越大表示该颜色加的越多。alpha表示颜色的透明度。names参数比较少用,用于对生成的颜色进行命名。
6. hsv函数和hcl函数
hsv(h=1,s=1,v=1,alpha)
这个函数是hue,saturation和value的首字母组合,表示用色调,饱和度和纯度来构建颜色。前三个参数取值是0-1,alpha表示透明度。
hcl(h=0,c=35,l=85,alpha,fixup=TRUE)
这个函数是hue,chroma和luminance的首字母组合,表示用色调,色度和亮度来构建颜色。
7. Colourpicker包
#安装
#To install the stable CRAN version:
install.packages("colourpicker")
#To install the latest development version from GitHub:
install.packages("remotes")
remotes::install_github("daattali/colourpicker")
更像是RStudio的一个插件,下载之后使用时无需加载。
(安装后会出现在RStudio的Addins中)
plot(1:5,col=CPCOLS)
选中上述代码,在Addins中点Plot Colour Helper,在跳出的面板中选择颜色。选择好后点done,在RStudio中运行选中的颜色即可。