服务热线
178 0020 3020
之前曾经给大家说过一期关于R语言颜色设置的推文,当时介绍了R语言自带的色卡以及RColorBrewer包所提供的色卡,这些配色方案能够满足我们的基础需求。
但人对美的追求是无限的,同时也是个性化的,每个人对“好看”的理解和标准都不一样,这一点在颜色上表现的尤为明显,而对于基本上没有设计和美学基础的生物方向科研人员来说,如何在文章配图中使用一个让人看着舒服的配色方案还是比较困难的。
今天就给大家带来一个我们无需纠结就可以直接拿来使用,并且一定会被杂志的编辑和审稿人认可的配色方案。
目 录
不同的期刊有其自身对于图片配色的喜好和标准,ggsci包为我们整合了这些标准的配色方案。
ggsci包可以说是ggplot2的一个扩展包,主要的应用是对ggplot绘制的图形提供设定好的配色方案,但同时该包中的配色方案也能够被base或lattice等其它绘图方式所调用。
ggsci包是目前我见过使用最简单、配色最好看的一个包,这个包的配色方案主要来自于SCI期刊论文、数据可视化库及电视节目等。
作者开发这个包的主要目的是为科研工作者提供一个便利,因此,该包对于还在苦苦寻找图片最佳配色的我们有很大帮助。
ggsci包的配色方案使用scale_color_palname()
和scale_fill_palname()
调用,其中的palname为不同配色方案的名称。
这里我会先介绍各种配色方案,在文末会给出ggsci包所包含的配色方案的对照表。
本文旨在介绍ggsci包的配色方案,绘图的示例代码来自ggsci包的官网,内容大多是对于ggsci官网document的中文翻译,便于大家理解。
首先,我们绘制一幅散点图和一幅条形图用于介绍不同的配色方案。
install.package("ggsci") # 安装ggsci包
library("ggsci") # 加载包
library("ggplot2") # 加载包
library("gridExtra") # 加载包
data(“diamonds”) # 加载数据集
p1 <- ggplot(subset(diamonds, carat >= 2.2),
aes(x = table, y = price, colour = cut)) +
geom_point(alpha = 0.7) +
geom_smooth(method = “loess”, alpha = 0.05, size = 1, span = 1) +
theme_bw()
p2 <- ggplot(subset(diamonds, carat > 2.2 & depth > 55 & depth < 70),
aes(x = depth, fill = cut)) +
geom_histogram(colour = “black”, binwidth = 1, position = “dodge”) +
theme_bw()
grid.arrange(p1, p2, ncol = 2)
该配色方案根据Nature旗下期刊文章图片配色开发。
p1_npg <- p1 + scale_color_npg()
p2_npg <- p2 + scale_fill_npg()
grid.arrange(p1_npg, p2_npg, ncol = 2)
该配色方案是根据Science旗下期刊文章图片配色开发。
p1_aaas <- p1 + scale_color_aaas()
p2_aaas <- p2 + scale_fill_aaas()
grid.arrange(p1_aaas, p2_aaas, ncol = 2)
该配色方案是根据新英格兰医学杂志的文章图片配色开发。
p1_nejm <- p1 + scale_color_nejm()
p2_nejm <- p2 + scale_fill_nejm()
grid.arrange(p1_nejm, p2_nejm, ncol = 2)
该配色方案是根据柳叶刀杂志的文章图片配色开发。
p1_lancet <- p1 + scale_color_lancet()
p2_lancet <- p2 + scale_fill_lancet()
grid.arrange(p1_lancet, p2_lancet, ncol = 2)
该配色方案是根据美国医学学会杂志的文章图片配色开发。
p1_jama <- p1 + scale_color_jama()
p2_jama <- p2 + scale_fill_jama()
grid.arrange(p1_jama, p2_jama, ncol = 2)
该配色方案是根据临床肿瘤学杂志的文章图片配色开发。
p1_jco <- p1 + scale_color_jco()
p2_jco <- p2 + scale_fill_jco()
grid.arrange(p1_jco, p2_jco, ncol = 2)
该配色是根据UCSC基因组浏览器对染色体的配色方案开发,其同时还用于Circos绘制弦图的颜色匹配。
p1_ucscgb <- p1 + scale_color_ucscgb()
p2_ucscgb <- p2 + scale_fill_ucscgb()
grid.arrange(p1_ucscgb, p2_ucscgb, ncol = 2)
该配色是根据D3.js工具的配色方案开发,其包含4个不同的色卡:category10
、category20
、category20b
、category20c
,可以使用palette参数进行选择。
p1_d3 <- p1 + scale_color_d3()
p2_d3 <- p2 + scale_fill_d3()
grid.arrange(p1_d3, p2_d3, ncol = 2)
该配色是根据LocusZoom.js工具的配色方案开发,该工具主要被用来展示GWAS数据。
p1_locuszoom <- p1 + scale_color_locuszoom()
p2_locuszoom <- p2 + scale_fill_locuszoom()
grid.arrange(p1_locuszoom, p2_locuszoom, ncol = 2)
该配色是根据IGV展示染色体的配色方案开发。
p1_igv_default <- p1 + scale_color_igv()
p2_igv_default <- p2 + scale_fill_igv()
grid.arrange(p1_igv_default, p2_igv_default, ncol = 2)
该配色是根据Catalogue Of Somatic Mutations in Cancers
的配色方案开发,共有三个不同的色卡。
这个色卡没有调出来,不知道为什么。
p1_cosmic_hallmarks_light <- p1 + scale_color_cosmic("hallmarks_light")
p2_cosmic_hallmarks_light <- p2 + scale_fill_cosmic("hallmarks_light")
grid.arrange(p1_cosmic_hallmarks_light, p2_cosmic_hallmarks_light, ncol = 2)
p1_cosmic_hallmarks_dark <- p1 + scale_color_cosmic("hallmarks_dark")
p2_cosmic_hallmarks_dark <- p2 + scale_fill_cosmic("hallmarks_dark")
grid.arrange(p1_cosmic_hallmarks_dark, p2_cosmic_hallmarks_dark, ncol = 2)
p1_cosmic_signature <- p1 + scale_color_cosmic("signature_substitutions")
p2_cosmic_signature <- p2 + scale_fill_cosmic("signature_substitutions")
grid.arrange(p1_cosmic_signature, p2_cosmic_signature, ncol = 2)
该配色方案是来自于芝加哥大学的配色方案,具有默认、light和dark三个色卡。
p1_uchicago <- p1 + scale_color_uchicago()
p2_uchicago <- p2 + scale_fill_uchicago()
grid.arrange(p1_uchicago, p2_uchicago, ncol = 2)
来自于《星际迷航》的配色方案。
p1_startrek <- p1 + scale_color_startrek()
p2_startrek <- p2 + scale_fill_startrek()
grid.arrange(p1_startrek, p2_startrek, ncol = 2)
该配色方案来自于电影《创战记》,需要使用深色主题模式。
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()
grid.arrange(p1_tron, p2_tron, ncol = 2)
该配色方案来自于一部美国喜剧漫画集动画片《飞出个未来》。
p1_futurama <- p1 + scale_color_futurama()
p2_futurama <- p2 + scale_fill_futurama()
grid.arrange(p1_futurama, p2_futurama, ncol = 2)
该配色方案来自于美国承认动画科幻情景喜剧《瑞克和莫蒂》。
p1_rickandmorty <- p1 + scale_color_rickandmorty()
p2_rickandmorty <- p2 + scale_fill_rickandmorty()
grid.arrange(p1_rickandmorty, p2_rickandmorty, ncol = 2)
该配色方案来自于《辛普森一家》。
p1_simpsons <- p1 + scale_color_simpsons()
p2_simpsons <- p2 + scale_fill_simpsons()
grid.arrange(p1_simpsons, p2_simpsons, ncol = 2)
同样地,首先构造一幅图片,这里绘制一幅相关性图。
library("reshape2")
data("mtcars")
cor <- cor(unname(cbind(mtcars, mtcars, mtcars, mtcars)))
cor_melt <- melt(cor)
p3 <- ggplot(cor_melt,aes(x = Var1, y = Var2, fill = value)) +
geom_tile(colour = “black”, size = 0.3) +
theme_bw() +
theme(axis.title.x = element_blank(),axis.title.y = element_blank())
该配色方案来自于GSEA Gene Pattern。
p3_gsea <- p3 + scale_fill_gsea()
p3_gsea_inv <- p3 + scale_fill_gsea(reverse = TRUE)
grid.arrange(p3_gsea, p3_gsea_inv, ncol = 2)
ggsci除了提供GSEA的梯度颜色配色方案之外,还提供19种单一颜色的梯度配色,使用scale_fill_material()进行调用。
这19种颜色包括red、pink、purple、deep-purple、indigo、blue、light-blue、cyan、teal、green、light-green、lime、yellow、amber、orange、deep-orange、brown、grey和blue-grey。
mypal <- pal_material("red", alpha = 0.9)(9); mypal
library("scales")
show_col(mypal)
ggsci包的配色方案可以使用色卡生成功能产生一个色卡向量,用于其它绘图模式的配色。
mypal <- pal_npg("nrc", alpha = 0.7)(9)
参数意义:
pal_npg # 不同色卡的生成函数名称;
nrc # 色卡的名称;
alpha # 颜色的透明度;
# 最后括号中的数字为生成色卡中颜色的数目。
不同配色方案色卡名称及使用和色卡生成函数如下方所示。
每一个色卡所包含的颜色数目不同,根据实际情况进行选择。
mypal <- pal_npg("nrc", alpha = 0.7)(9)
mypal
# 输出:
[1] "#E64B35B2" "#4DBBD5B2" "#00A087B2" "#3C5488B2" "#F39B7FB2" "#8491B4B2" "#91D1C2B2" "#DC0000B2" "#7E6148B2"
library("scales")
show_col(mypal)
更多信息请访问ggsci官网:https://nanx.me/ggsci/articles/ggsci.html#discrete-color-palettes
。
附件