R绘图 ggsci: 高大上的论文配色,一文解决配色问题
连续学了几天R语言基础,有点枯燥,今天来继续画图吧
今天介绍ggsci包,它提供了一系列高质量的调色板,这些调色板的灵感来自于科学期刊、数据可视化库、科幻电影和电视节目中使用的颜色。ggsci中的调色板可用在ggplot2中。
对于所有调色板,相应的比例命名为
scale_color_palname()scale_fill_palname()

离散调色板
我们使用带平滑曲线的散点图和条形图来演示ggsci中的离散调色板。
原始配色
library('ggplot2')library('gridExtra')library('ggsci')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)
NPG配色
NPG调色板的灵感来自于自然出版集团出版的期刊中的图表
p1_npg <- p1 + scale_color_npg()p2_npg <- p2 + scale_fill_npg()grid.arrange(p1_npg, p2_npg, ncol = 2)
AAAS配色
p1_aaas <- p1 + scale_color_aaas()p2_aaas <- p2 + scale_fill_aaas()grid.arrange(p1_aaas, p2_aaas, ncol = 2)
NEJM
p1_nejm <- p1 + scale_color_nejm()p2_nejm <- p2 + scale_fill_nejm()grid.arrange(p1_nejm, p2_nejm, ncol = 2)
Lancet
p1_lancet <- p1 + scale_color_lancet()p2_lancet <- p2 + scale_fill_lancet()grid.arrange(p1_lancet, p2_lancet, ncol = 2)
JAMA
p1_jama <- p1 + scale_color_jama()p2_jama <- p2 + scale_fill_jama()grid.arrange(p1_jama, p2_jama, ncol = 2)
JCO
p1_jco <- p1 + scale_color_jco()p2_jco <- p2 + scale_fill_jco()grid.arrange(p1_jco, p2_jco, ncol = 2)
UCSCGB
p1_ucscgb <- p1 + scale_color_ucscgb()p2_ucscgb <- p2 + scale_fill_ucscgb()grid.arrange(p1_ucscgb, p2_ucscgb, ncol = 2)
D3
p1_d3 <- p1 + scale_color_d3()p2_d3 <- p2 + scale_fill_d3()grid.arrange(p1_d3, p2_d3, ncol = 2)
LocusZoom
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)
COSMIC
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)
UChicago
p1_uchicago <- p1 + scale_color_uchicago()p2_uchicago <- p2 + scale_fill_uchicago()grid.arrange(p1_uchicago, p2_uchicago, ncol = 2)
Star Trek
p1_startrek <- p1 + scale_color_startrek()p2_startrek <- p2 + scale_fill_startrek()grid.arrange(p1_startrek, p2_startrek, ncol = 2)
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()grid.arrange(p1_tron, p2_tron, ncol = 2)
Futurama
p1_futurama <- p1 + scale_color_futurama()p2_futurama <- p2 + scale_fill_futurama()grid.arrange(p1_futurama, p2_futurama, ncol = 2)
Rick and Morty
p1_rickandmorty <- p1 + scale_color_rickandmorty()p2_rickandmorty <- p2 + scale_fill_rickandmorty()grid.arrange(p1_rickandmorty, p2_rickandmorty, ncol = 2)
The Simpsons
p1_simpsons <- p1 + scale_color_simpsons()p2_simpsons <- p2 + scale_fill_simpsons()grid.arrange(p1_simpsons, p2_simpsons, ncol = 2)
连续调色板
我们将使用相关矩阵可视化来演示ggsci中的连续调色板。
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() )p3
GSEA
p3_gsea <- p3 + scale_fill_gsea()p3_gsea_inv <- p3 + scale_fill_gsea(reverse = TRUE)grid.arrange(p3_gsea, p3_gsea_inv, ncol = 2)
Material Design
材料设计调色板来自材料设计颜色指南。我们首先生成一个随机矩阵:
library("reshape2")
set.seed(121)k <- 9x <- diag(k)x[upper.tri(x)] <- runif(sum(1:(k - 1)), 0, 1)x_melt <- melt(x)
p4 <- ggplot(x_melt, aes(x = Var1, y = Var2, fill = value)) + geom_tile(colour = "black", size = 0.3) + scale_x_continuous(expand = c(0, 0)) + scale_y_continuous(expand = c(0, 0)) + 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() )p4
使用19个材质设计调色板绘制矩阵:
grid.arrange( 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)
从上图中我们可以看到,尽管所有的图都显示了一个相同的矩阵,但是一些调色板比其他调色板更舒服,因为我们的眼睛对饱和度的变化更敏感
Non-ggplot2 Graphics
要将ggsci中的调色板应用于其他图形系统(如基础图形和晶格图形),只需使用上表中的调色板生成器函数。例如:
mypal <- pal_npg("nrc", alpha = 0.7)(9)mypal## [1] "#E64B35B2" "#4DBBD5B2" "#00A087B2" "#3C5488B2" "#F39B7FB2" "#8491B4B2"## [7] "#91D1C2B2" "#DC0000B2" "#7E6148B2"library("scales")show_col(mypal)
您将能够使用生成的十六进制颜色代码为这样的图形系统相应。整个调色板的透明级别很容易通过每个生成器或scale函数中的参数“alpha”进行调整。
好了,今天的分享就到这里
福利专用贴:福利专用贴
目前有
1. 火山图,热图示例文件及完整代码
2. R语言学习基础知识代码
3. R语言实战(中文完整版)
4. R数据科学(中文完整版)
5. ggplot2:数据分析与图形艺术
6. 30分钟学会ggplot2
7. TCGA数据整理
8. ggplot2速查表pdf(可复制)
赞 (0)
