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

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

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

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

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

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

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

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

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

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

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

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

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

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

除了直接进行配色外,还可以使用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"

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

  1. ggspatial | ggplot2的地图制作拓展包(1):如何添加指北针和比例尺

    在前面的推文里,小编介绍了R语言的基础绘图系统和tmap工具包绘制地图的方法.ggplot2工具包作为现在最受欢迎的绘图包,其本身绘制地图的功能并不算强大.但是ggplot2有许多优秀的拓展包,它们共 ...

  2. scatterpie | ggplot2的几何图形拓展包(1):如何在地图中添加饼图

    前几天有读者在知乎上咨询"散点饼图"的问题,用的是scatterpie工具包,这是ggplot2绘图系统的一个拓展包,一共就包含三个函数: geom_scatterpie geom ...

  3. R语言ggplot2可视化:使用ggpubr包的ggdotplot函数可视化分组点阵图(dot plot)、设置palette参数设置不同分组点阵图数据点的颜色

    R语言ggplot2可视化:使用ggpubr包的ggdotplot函数可视化分组点阵图(dot plot).设置palette参数设置不同分组点阵图数据点的颜色 目录

  4. pip安装拓展包--网络超时/Read timed out问题

    pip安装拓展包--网络超时/Read timed out问题 解决方案:切换镜像源(墙皮太厚) 在后面加上: -i https://pypi.douban.com/simple example: p ...

  5. R语言ggplot2可视化:使用ggfortyify包中的autoplot函数自动可视化时间序列数据(Time Series Plot From a Time Series Object (ts))

    R语言ggplot2可视化:使用ggfortyify包中的autoplot函数自动可视化时间序列数据(Time Series Plot From a Time Series Object (ts)) ...

  6. R语言ggplot2可视化:使用dplyr包计算每个分组个数的比例(对计算获得的百分比进行近似,值保留整数部分)、使用ggplot2可视化条形图(bar plot)、并在条形图上添加百分比标签

    R语言ggplot2可视化:使用dplyr包计算每个分组个数的比例(对计算获得的百分比进行近似,值保留整数部分).使用ggplot2可视化条形图(bar plot).并在条形图上添加百分比标签 目录

  7. R语言ggplot2可视化:使用ggrepel包在线图(line plot)的尾端那个数据点添加文本标签(text label)

    R语言ggplot2可视化:使用ggrepel包在线图(line plot)的尾端那个数据点添加文本标签(text  label) 目录

  8. R语言ggplot2可视化:使用patchwork包绘制ggplot2可视化结果的组合图(自定义图像的嵌入关系)、使用patchwork包绘制ggplot2可视化结果的组合图(自定义组合形式)

    R语言ggplot2可视化:使用patchwork包绘制ggplot2可视化结果的组合图(自定义图像的嵌入关系).使用patchwork包绘制ggplot2可视化结果的组合图(自定义组合形式) 目录

  9. R语言ggplot2可视化:使用gganimate包和gapminder包为生成的动画文件gif设置尺寸、分辨率

    R语言ggplot2可视化:使用gganimate包和gapminder包为生成的动画文件gif设置尺寸.分辨率 目录

最新文章

  1. 独家揭秘 | 腾讯、Uber都在哪儿招人
  2. 计算机专业课题 结题报告,计算机结题报告 - 结题报告 - 书业网.doc
  3. 十四种Java开发工具点评
  4. Spark List组件滚动条加事件使datalist数据发生变化
  5. 4.1.1网络层功能概述
  6. maatkit使用总结
  7. 【华为云技术分享】Linux内核模块依赖图绘制(2)
  8. Zabbix 对接 LDAP 实现用户统一登录的方法
  9. win10安装git,打开git bash闪退
  10. 关于IPV6审核被拒的完整分析
  11. 实心和空心哪个抗弯能力强_为什么轮胎不设计成实心的?不怕爆胎 480阅读
  12. IM即时通讯源码系统安卓苹果IOS双端源码介绍
  13. 2013.07.10《播音主持之绕口令训练…
  14. android手机用Termux安装archlinux
  15. photoshop制作gif动画
  16. Android app跳转QQ加人聊天或者加群
  17. 2020年排名前10的Python库
  18. Vivado安装使用【Verilog】
  19. 如何获取vs code中插件Waka Time的API key
  20. V神北京演讲全文:Casper与分片技术的最新进展

热门文章

  1. 从IT应用架构角度,畅谈双活数据中心容灾解决方案
  2. Spring MVC学习总结(19)——SpringMVC权限注解拦截
  3. Linux学习总结(44)——Linux操作系统基础知识
  4. mysql存放lng lat_使用空间点类型在MySQL中存储Lat Lng值
  5. 韩国冬奥:未来科技奥运我要长这样,阿里巴巴:你尽管想
  6. 如何利用docker 构建golang线上部署环境
  7. Memcached集成Spring缓存环境构建
  8. Linux SHELL 学习随笔--for 循环
  9. iPad Air PSD设计模板
  10. 可用于Asp.net的嵌入式数据库SqlCE4.0试用笔记