前言
配色是个审美问题,我们通常都是拿别人配好的一组颜色来画图。用来配色的包很多,今天介绍的是一个组合拳,内置了几乎所有配色R包,配色组合数量2000+,可谓是最齐全的了。
它吸引我的有两个地方:
可以直接在控制台显示出颜色
使用起来异常简单明了
无缝对接ggplot
行吧,三个地方,我不倒回去改了有点激动
1.安装
if(!require(paletteer))install.packages("paletteer")
if(!require(scico))install.packages('scico')
if(!require(nord))install.packages('nord')
library(paletteer)
paletteer就是今天的主角,十分优秀
2.一分钟上手
支持两类配色:
paletteer_c
:连续型配色,映射颜色的那一列是一串连续的数据,最常见的连续型数据就是数值,举个栗子:
paletteer_d
:离散型配色,映射颜色的那一列有固定几个的取值,每个取值对应一个颜色。
其中离散型配色中有个paletteer_dynamic
,即动态配色,就是说可以把一组颜色任意切分成n个颜色,取决于你想要多少种颜色,要多少就有多少,如下图,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
引号里是包名::配色名,并不需要自己去查,直接按键盘上Q前面那个tab即可。顺便秀一下我新定制的表情包:
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
library(ggpubr)
data("ToothGrowth")
df <- ToothGrowth
ggboxplot(df, x = "dose", y = "len", width = 0.8,color = "dose")+
scale_color_paletteer_d("basetheme::minimal")
5.对接其他绘图R包
pheatmap
pheatmap::pheatmap(volcano,color = paletteer_c("scico::berlin", n = 100))
为什么这里是100呢?倒也不是必须100,只是热图默认配色也是把红黄蓝切成了100种颜色。
ComplexHeatmap
library(ComplexHeatmap)
Heatmap(t(iris[,1:4]),col = paletteer_c("scico::berlin", n = 100),name = "iris")