ggsci | ggplot2的颜色标度拓展包(1):科研配色风格

ggsci是一个知名的ggplot2拓展包,工具包名称中的sciscience的缩写。它的开发者是两个中国人:Nan Xiao <https://nanx.me>、Miaozhu Li <http://miaozhu.li>。

ggsci工具包拓展了ggplot2绘图系统的颜色标度函数,并且遵从scale_col_*scale_fill_*式的命名规则。它的优点在于可以快速生成符合学术品味的配色,并且针对一些著名期刊还开发了对应的颜色标度函数。除期刊外,还有一些配色灵感来自数据可视化库、科幻电影和电视。

工具包中的函数可以分为如下两大类、四小类:

  • 颜色标度函数:scale_fill_*scale_color_*

  • 调色板函数:pal_*rgb_*

其中scale_fill_*scale_color_*类型的函数的用法与ggplot2中的颜色标度函数一致,大部分为离散型标度函数;pal_*rgb_*函数可以输出这些标度函数所对应的颜色编码。

  • ggsci工具包中所有函数及其功能可以通过这个网址查看:https://mirrors.tuna.tsinghua.edu.cn/CRAN/web/packages/ggsci/vignettes/ggsci.html。

比如,scale_fill_npg()scale_fill_aaas()函数可以分别用来实现NatureScience杂志的配色风格:

library(ggplot2)
library(patchwork)
df <- data.frame(x = c("a", "b", "c", "d"), y = c(3, 4, 1, 2))
p <- ggplot(df, aes(x, y, fill = x)) + 
  geom_bar(stat = "identity") + 
  labs(x = NULL, y = NULL) +
  theme(legend.position = "none")

library(ggsci)
p1 <- p + scale_fill_npg()
p2 <- p + scale_fill_aaas()

p1 + p2
d771974cb05ea99b3c693bd7bf9afa77.png

著名医学期刊柳叶刀The Lancet)和美国医学会杂志JAMA)的配色风格:

p3 <- p + scale_fill_lancet()
p4 <- p + scale_fill_jama()

p3 + p4
c502bf8ca07444bc8f84eb5a4c7e558a.png

还有一些来自数据可视化库的配色风格:

p5 <- p + scale_fill_ucscgb()
p6 <- p + scale_fill_d3()

p5 + p6
b21689d24a8a07bc1174dc45fdd79018.png

以上举例都属于离散型颜色标度函数,这些函数的语法结构如下:

scale_fill_*(palette, alpha = 1, ...)
  • palette:调色板;具体需要查看各个函数的帮助文档;

  • alpha:透明度;数值越小,透明度越高;

  • ...:ggplot2绘图系统中的离散标度函数的公共参数。

同一个函数不同的调色板:

p7 <- p + scale_fill_uchicago(palette = "light")
p8 <- p + scale_fill_uchicago(palette = "dark")

p7 + p8
a902c3e580d438d3df38bb3d44577f76.png

ggsci工具包还提供了两种连续型的颜色标度函数,它们比离散标度函数多了一个reverse参数:

  • scale_fill/color_gsea()

  • scale_fill/color_material()

scale_color_gsea() 函数会生成一个蓝-红的颜色渐变带:

set.seed(107)
df <- data.frame(x = 1:40, y = rnorm(40))
p <- ggplot(df, aes(x, y, color = y)) + 
  geom_point(size = 2) + 
  labs(x = NULL, y = NULL)

p1 <- p + scale_color_gsea()
p2 <- p + scale_color_gsea(reverse = T)

p1 + p2
c6ee11e63f4db6874fc6fd4fa4ba6c44.png

scale_color_material()函数提供了19种单色颜色渐变带,颜色类型需要通过palette参数指定,具体见该函数的帮助文档:

p3 <- p + scale_color_material()
p4 <- p + scale_color_material(palette = "purple",
                               alpha = 0.6)

p3 + p4
ec2398c56f43b7dbeb41983f5dfb3549.png

除了直接进行配色外,还可以使用pal_*rgb_*类的函数输出它们的颜色编码,这样就可以将这些配色风格保留下来了。前者对应的是离散型标度函数,后者对应的是连续型标度函数。在得到这些颜色的编码后,就可以在更广范围内运用这些配色风格了,而不再局限于ggplot2绘图系统里。

pal_*函数举例:

pal_npg()(4)
## [1] "#E64B35FF" "#4DBBD5FF" "#00A087FF" "#3C5488FF"

pal_uchicago(palette = "dark")(5)
## [1] "#800000FF" "#767676FF" "#CC8214FF" "#616530FF" "#0F425CFF"

rgb_*函数举例:

rgb_gsea(n = 5, reverse = T)
## [1] "#D60C00FF" "#FF6B79FF" "#E9D0FBFF" "#7D7CFCFF" "#4500ACFF"

rgb_material(palette = "purple", n = 5)
## [1] "#F2E5F4FF" "#C887D3FF" "#A335B5FF" "#7F20A4FF" "#4A138CFF"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值