百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

R 数据可视化——ggsci 配色

bigegpt 2024-08-15 19:53 2 浏览

前言

在绘图时,如何搭配颜色,是一个很让人头疼的问题。今天要介绍的包 ggsci 能大大减轻我们的负担。

ggsci 提供了很多高质量的颜色搭配,其灵感来自于各种 SCI 杂志的配色,其提供的配色函数也是以对应的杂志或数据库名称来命名的

所有颜色标度函数的形式为:

  • scale_color/colour_palname()
  • scale_fill_palname()

其中 palname 表示对应颜色板的名称,此外,还有对应的画板颜色生成函数

  • pal_palname()

离散型配色

安装导入

install.packages("ggsci")
library(ggsci)

我们使用下面的两张图,分别为其设置不同的颜色标度,来展示不同标度函数的效果

library(tidyverse)
library(cowplot)

p1 <- filter(diamonds, carat >= 2.2) %>%
  ggplot(aes(table, price, colour = cut)) +
  geom_point(alpha = 0.7) +
  geom_smooth(method = "loess", alpha = 0.05, size = 1, span = 1) +
  theme_bw()

p2 <- filter(diamonds, carat > 2.2 & depth > 55 & depth < 70) %>%
  ggplot(aes(x = depth, fill = cut)) +
  geom_histogram(colour = "black", binwidth = 1, position = "dodge") +
  theme_bw()

plot_grid(p1, p2, ncol = 2)

1. NPG

该配色对应于 Nature Publishing Group 杂志中的配色,使用方式为

p1_npg <- p1 + scale_color_npg()
p2_npg <- p2 + scale_fill_npg()
plot_grid(p1_npg, p2_npg, ncol = 2)

该画板生成函数为 pal_npg,最多可生成 10 种颜色

> library("scales")
> pal_npg("nrc")(10)
 [1] "#E64B35FF" "#4DBBD5FF" "#00A087FF" "#3C5488FF" "#F39B7FFF" "#8491B4FF"
 [7] "#91D1C2FF" "#DC0000FF" "#7E6148FF" "#B09C85FF"
> show_col(pal_npg("nrc")(10))

添加透明度

show_col(pal_npg("nrc", alpha = 0.6)(9))

2. AAAS

该配色对应于 American Association for the Advancement of Science 杂志,例如

p1_aaas <- p1 + scale_color_aaas()
p2_aaas <- p2 + scale_fill_aaas()
plot_grid(p1_aaas, p2_aaas, ncol = 2)

最多支持 10 种颜色

show_col(pal_aaas("default", alpha = 0.6)(10))

3. NEJM

该配色对应于 New England Journal of Medicine 杂志

p1_nejm <- p1 + scale_color_nejm()
p2_nejm <- p2 + scale_fill_nejm()
plot_grid(p1_nejm, p2_nejm, ncol = 2)

最多包含 8 种颜色

show_col(pal_nejm("default", alpha = 0.6)(8))

4. Lancet

柳叶刀杂志

p1_lancet <- p1 + scale_color_lancet()
p2_lancet <- p2 + scale_fill_lancet()
plot_grid(p1_lancet, p2_lancet, ncol = 2)

最多包含 9 种颜色

show_col(pal_lancet(palette = c("lanonc"), alpha = 0.6)(9))

5. JAMA

对应于 The Journal of the American Medical Association 杂志

p1_jama <- p1 + scale_color_jama()
p2_jama <- p2 + scale_fill_jama()
plot_grid(p1_jama, p2_jama, ncol = 2)

最多包含 7 种颜色

show_col(pal_jama("default", alpha = 0.6)(7))

6. JCO

Journal of Clinical Oncology 杂志

p1_jco <- p1 + scale_color_jco()
p2_jco <- p2 + scale_fill_jco()
plot_grid(p1_jco, p2_jco, ncol = 2)

最多包含 10 种颜色

show_col(pal_jco("default", alpha = 0.6)(9))

7. UCSCGB

UCSC 数据库

p1_ucscgb <- p1 + scale_color_ucscgb()
p2_ucscgb <- p2 + scale_fill_ucscgb()
plot_grid(p1_ucscgb, p2_ucscgb, ncol = 2)

最多包含 26 种颜色

show_col(pal_ucscgb("default", alpha = 0.6)(26))

8. D3

使用 JavaScript 绘图库 D3.js 的配色

p1_d3 <- p1 + scale_color_d3()
p2_d3 <- p2 + scale_fill_d3()
plot_grid(p1_d3, p2_d3, ncol = 2)

支持 4 种调色板类型:

  • "category10" 包含 10 种颜色
  • "category20" 包含 20 种颜色
  • "category20b" 包含 20 种颜色
  • "category20c" 包含 20 种颜色

例如

show_col(pal_d3("category20")(20))
show_col(pal_d3("category10")(10))

9. LocusZoom

LocusZoom 配色

p1_locuszoom <- p1 + scale_color_locuszoom()
p2_locuszoom <- p2 + scale_fill_locuszoom()
plot_grid(p1_locuszoom, p2_locuszoom, ncol = 2)

最多支持 7 种颜色

show_col(pal_locuszoom("default", alpha = 0.6)(7))

10. IGV

IGV 中的配色

p1_igv_default <- p1 + scale_color_igv()
p2_igv_default <- p2 + scale_fill_igv()
plot_grid(p1_igv_default, p2_igv_default, ncol = 2)

支持 2 种调色板类型:

  • "default" 包含 51 种颜色
  • "alternating" 包含 2 种颜色

例如

show_col(pal_igv("default")(51))
show_col(pal_igv("alternating", alpha = 0.5)(2))

11. UChicago

基于 University of Chicago 的配色

p1_uchicago <- p1 + scale_color_uchicago()
p2_uchicago <- p2 + scale_fill_uchicago()
plot_grid(p1_uchicago, p2_uchicago, ncol = 2)

包含 3 种调色板:

  • "default" 包含 9 种颜色
  • "light" 包含 9 种颜色
  • "dark" 包含 9 种颜色

例如

show_col(pal_uchicago("default", alpha = 0.6)(9))
show_col(pal_uchicago("light", alpha = 0.6)(9))
show_col(pal_uchicago("dark", alpha = 0.6)(9))

12. Star Trek

Star Trek 配色方案

p1_startrek <- p1 + scale_color_startrek()
p2_startrek <- p2 + scale_fill_startrek()
plot_grid(p1_startrek, p2_startrek, ncol = 2)

最多支持 7 种颜色

show_col(pal_startrek("uniform", alpha = 0.6)(7))

13. Tron Legacy

Tron Legacy 配色

p1_tron <- p1 + theme_dark() + theme(
  panel.background = element_rect(fill = "#2D2D2D"),
  legend.key = element_rect(fill = "#2D2D2D")
) +
  scale_color_tron()
p2_tron <- p2 + theme_dark() + theme(
  panel.background = element_rect(fill = "#2D2D2D")
) +
  scale_fill_tron()
plot_grid(p1_tron, p2_tron, ncol = 2)

最多支持 7 种颜色

show_col(pal_tron("legacy", alpha = 0.6)(7))

14. Futurama

Futurama 配色

p1_futurama <- p1 + scale_color_futurama()
p2_futurama <- p2 + scale_fill_futurama()
plot_grid(p1_futurama, p2_futurama, ncol = 2)

最多支持 12 种颜色

show_col(pal_futurama("planetexpress", alpha = 0.6)(12))

15. Rick and Morty

Rick and Morty 配色

p1_rickandmorty <- p1 + scale_color_rickandmorty()
p2_rickandmorty <- p2 + scale_fill_rickandmorty()
plot_grid(p1_rickandmorty, p2_rickandmorty, ncol = 2)

最多支持 12 种颜色

show_col(pal_rickandmorty("schwifty", alpha = 0.6)(12))

16. The Simpsons

The Simpsons 配色

p1_simpsons <- p1 + scale_color_simpsons()
p2_simpsons <- p2 + scale_fill_simpsons()
plot_grid(p1_simpsons, p2_simpsons, ncol = 2)

最多支持 16 种颜色

show_col(pal_simpsons("springfield", alpha = 0.6)(16))

连续型配色

对于连续型配色方案,我们使用相关系数矩阵来进行说明。例如

mat <- as.data.frame(round(cor(mtcars), 2))
mat$var1 <- rownames(mat)

p3 <- gather(mat, key = "var2", value = "corr", -var1) %>%
  ggplot(aes(x = var1, y = var2, fill = corr)) +
  geom_tile(colour = "black", size = 0.3) +
  theme_bw() +
  theme(
    axis.title.x = element_blank(),
    axis.title.y = element_blank()
  )
p3

1. GSEA

GSEA 配色

p3_gsea <- p3 + scale_fill_gsea()
p3_gsea_inv <- p3 + scale_fill_gsea(reverse = TRUE)
plot_grid(p3_gsea, p3_gsea_inv, ncol = 2)

颜色生成函数为

pal_gsea(palette = c("default"), n = 12, alpha = 1, reverse = FALSE)

例如

show_col(pal_gsea("default", n = 30, alpha = 0.6, reverse = TRUE)(16))

2. Material Design

Material Design 支持 19 种颜色配色

p4 <- ggplot(data, aes(x = var1, y = var2, fill = corr)) +
  geom_tile(colour = "black", size = 0.3) +
  theme_bw() + theme(
    legend.position = "none", plot.background = element_blank(),
    axis.line = element_blank(), axis.ticks = element_blank(),
    axis.text.x = element_blank(), axis.text.y = element_blank(),
    axis.title.x = element_blank(), axis.title.y = element_blank(),
    panel.background = element_blank(), panel.border = element_blank(),
    panel.grid.major = element_blank(), panel.grid.minor = element_blank()
  )
  
plot_grid(
  p4 + scale_fill_material("red"), 
  p4 + scale_fill_material("pink"),
  p4 + scale_fill_material("purple"), 
  p4 + scale_fill_material("deep-purple"),
  p4 + scale_fill_material("indigo"), 
  p4 + scale_fill_material("blue"),
  p4 + scale_fill_material("light-blue"), 
  p4 + scale_fill_material("cyan"),
  p4 + scale_fill_material("teal"), 
  p4 + scale_fill_material("green"),
  p4 + scale_fill_material("light-green"), 
  p4 + scale_fill_material("lime"),
  p4 + scale_fill_material("yellow"), 
  p4 + scale_fill_material("amber"),
  p4 + scale_fill_material("orange"), 
  p4 + scale_fill_material("deep-orange"),
  p4 + scale_fill_material("brown"), 
  p4 + scale_fill_material("grey"),
  p4 + scale_fill_material("blue-grey"),
  ncol = 6
)

颜色生成函数为

pal_material(
  palette = c("red", "pink", "purple", 
              "deep-purple", "indigo", 
              "blue", "light-blue",
              "cyan", "teal", "green", 
              "light-green", "lime", 
              "yellow", "amber", "orange",
              "deep-orange", "brown", 
              "grey", "blue-grey"),
  n = 10,
  alpha = 1,
  reverse = FALSE
)

例如

show_col(pal_material("indigo")(9))



相关推荐

了解Linux目录,那你就了解了一半的Linux系统

大到公司或者社群再小到个人要利用Linux来开发产品的人实在是多如牛毛,每个人都用自己的标准来配置文件或者设置目录,那么未来的Linux则就是一团乱麻,也对管理造成许多麻烦。后来,就有所谓的FHS(F...

Linux命令,这些操作要注意!(linux命令?)

刚玩Linux的人总觉得自己在演黑客电影,直到手滑输错命令把公司服务器删库,这才发现命令行根本不是随便乱用的,而是“生死簿”。今天直接上干货,告诉你哪些命令用好了封神!喜欢的一键三连,谢谢观众老爷!!...

Linux 命令速查手册:这 30 个高频指令,拯救 90% 的运维小白!

在Linux系统的世界里,命令行是强大的武器。对于运维小白而言,掌握一些高频使用的Linux命令,能极大提升工作效率,轻松应对各种系统管理任务。今天,就为大家奉上精心整理的30个Linu...

linux必学的60个命令(linux必学的20个命令)

以下是Linux必学的20个基础命令:1.cd:切换目录2.ls:列出文件和目录3.mkdir:创建目录4.rm:删除文件或目录5.cp:复制文件或目录6.mv:移动/重命名文件或目录7....

提高工作效率的--Linux常用命令,能够决解95%以上的问题

点击上方关注,第一时间接受干货转发,点赞,收藏,不如一次关注评论区第一条注意查看回复:Linux命令获取linux常用命令大全pdf+Linux命令行大全pdf为什么要学习Linux命令?1、因为Li...

15 个实用 Linux 命令(linux命令用法及举例)

Linux命令行是系统管理员、开发者和技术爱好者的强大工具。掌握实用命令不仅能提高效率,还能解锁Linux系统的无限潜力,本文将深入介绍15个实用Linux命令。ls-列出目录内容l...

Linux 常用命令集合(linux常用命令全集)

系统信息arch显示机器的处理器架构(1)uname-m显示机器的处理器架构(2)uname-r显示正在使用的内核版本dmidecode-q显示硬件系统部件-(SMBIOS/DM...

Linux的常用命令就是记不住,怎么办?

1.帮助命令1.1help命令#语法格式:命令--help#作用:查看某个命令的帮助信息#示例:#ls--help查看ls命令的帮助信息#netst...

Linux常用文件操作命令(linux常用文件操作命令有哪些)

ls命令在Linux维护工作中,经常使用ls这个命令,这是最基本的命令,来写几条常用的ls命令。先来查看一下使用的ls版本#ls--versionls(GNUcoreutils)8.4...

Linux 常用命令(linux常用命令)

日志排查类操作命令查看日志cat/var/log/messages、tail-fxxx.log搜索关键词grep"error"xxx.log多条件过滤`grep-E&#...

简单粗暴收藏版:Linux常用命令大汇总

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部下午好,我的网工朋友在Linux系统中,命令行界面(CLI)是管理员和开发人员最常用的工具之一。通过命令行,用户可...

「Linux」linux常用基本命令(linux常用基本命令和用法)

Linux中许多常用命令是必须掌握的,这里将我学linux入门时学的一些常用的基本命令分享给大家一下,希望可以帮助你们。总结送免费学习资料(包含视频、技术学习路线图谱、文档等)1、显示日期的指令:d...

Linux的常用命令就是记不住,怎么办?于是推出了这套教程

1.帮助命令1.1help命令#语法格式:命令--help#作用:查看某个命令的帮助信息#示例:#ls--help查看ls命令的帮助信息#netst...

Linux的30个常用命令汇总,运维大神必掌握技能!

以下是Linux系统中最常用的30个命令,精简版覆盖日常操作核心需求,适合快速掌握:一、文件/目录操作1.`ls`-列出目录内容`ls-l`(详细信息)|`ls-a`(显示隐藏文件)...

Linux/Unix 系统中非常常用的命令

Linux/Unix系统中非常常用的命令,它们是进行文件操作、文本处理、权限管理等任务的基础。下面是对这些命令的简要说明:**文件操作类:*****`ls`(list):**列出目录内容,显...