还在为绘制配色担心?小图教你用RColorBrewer包选择完美的配色!!






还在为绘制配色担心?小图教你用RColorBrewer包选择完美的配色!!

小图  生信果  2023-09-15 19:00:22

点击蓝字

关注小图

小伙伴平时绘制不少图片,但是往往因为配色的问题而困扰,总是到不到很好看的配色,自己明明选择几个好看的颜色,组合在一来完全不搭配,不懂得如何使用配色的搭配,小图在这里教大家一个方法,使用R语言颜色相关包RColorBrewer,这个包不仅能提供好看的配色,还可以根据我们平时绘图的类型去选择不同的颜色,是不是听起来很有意思?


我们先简单了解一下这个RColorBrewer包。这个包颜色主要分三个部分,顺序(Sequential)、定性(Qualitative)和发散(Diverging)。而这三个部分可以应用于不同的绘图类型中,例如在顺序(Sequential)中可以生成渐变的颜色,那我们就可以用在连续性的数据中,比如密度图,线图等。对于定性(Qualitative)是生成差异明显的颜色,我们就可以用在条形图或者饼图这种分组或者分类别的。发散(Diverging)呢就是分散的数据,一般是数据两个极端但是有中间值的数据,比如相关性贴图等。



下面我们先看一下这三个部分有哪些颜色组成:

#install.packages("RColorBrewer")#不要忘记安装R包library(RColorBrewer)library(ggplot2)display.brewer.all() #展示所有的色板

我们可以将颜色打印出来,这里小图使用Set3进行颜色举例

pal<-brewer.pal(8,'Set3')# 展示'Set3'色板中8个颜色paldisplay.brewer.pal(8,'Set3')


接下来我们就进行实战的演习把,对于渐变的颜色,我们绘制密度图来演示:

# 创建数据data <- data.frame(group = rep(c("A", "B", "C"), each = 100), value = c(rnorm(100, 0, 1), rnorm(100, 2, 1), rnorm(100, 4, 1)))# 创建Sequential颜色调色板colors <- brewer.pal(3, "BuPu")# 绘制密度图ggplot(data, aes(x = value, fill = group)) +   geom_density(alpha = 0.5) +  scale_fill_manual(values = colors) +  labs(x = "value", y = "pro", title = "")

这种图就可以用在去批次效应等,是不是渐变的颜色很好看。


我们对于有差异明显的数据,这里用饼图来演示:

# 创建数据data <- data.frame(category = c("A", "B", "C", "D"), value = c(30, 20, 25, 15))# 创建Qualitative颜色调色板colors <- brewer.pal(4, "Set1")# 绘制饼图ggplot(data, aes(x = "", y = value, fill = category)) +   geom_bar(stat = "identity") +  coord_polar("y") +  scale_fill_manual(values = colors)

这样一来,颜色的很明显的区分开。对于发散性的数据,比如相关性等,我们绘制箱线图去演示:

# 创建数据data <- data.frame(group = rep(c("A", "B", "C"), each = 50), value = c(rnorm(50, 0, 1), rnorm(50, 3, 1), rnorm(50, 6, 1)))# 创建Diverging颜色调色板colors <- brewer.pal(7, "RdBu")# 绘制箱线图ggplot(data, aes(x = group, y = value, fill = group)) +   geom_boxplot() +  scale_fill_manual(values = colors) +  labs(x = "group", y = "value")

上述就只是例子,小伙伴看清楚如何调用颜色使用,去选择自己喜欢的颜色并看好使用哪种类型的绘图类型。


这个包还可以与grDevices包联合使用,可能有点小伙伴不了解这个包,小图下期单独给大家讲解一下。

这个包可以对颜色进行渐变的配置,和RColorBrewer包搭配一起呢可以绘制出更漂亮的颜色,来看一下把!:

library(ComplexHeatmap)library(grDevices)library(circlize)library(RColorBrewer)
## 选择包中的RdYlBu颜色,可以使用rev()函数将颜色反转,将原本的‘红-蓝’,变为‘蓝-红’colors <- colorRampPalette(rev(brewer.pal(n = 7, name ="RdYlBu")))(100) ##蓝到红values <- seq(-0.5, 0.5, length.out = 101)[-101]col_fun = colorRamp2(values, colors)
random_matrix <- matrix(rnorm(10000), nrow = 100, ncol = 100)random_matrix <- random_matrix / max(abs(random_matrix)) ComplexHeatmap::Heatmap(random_matrix, name = " ", col = col_fun, cluster_rows = F,cluster_columns = F)

因为数据是随机生成的,可能不是太美观,要是换成小伙伴自己的实验数据,那么小图觉得肯定好看的。小伙伴有没有学会配色的学习呢,快去动手试试吧,不要忘记多多理解代码的意义,这样才可以绘制出看的配色!


欢迎使用:云生信平台 ( http://www.biocloudservice.com/home.html)

往期推荐

小图教你绘制高大上的热图!R包ComplexHeatmap热图神器的使用!!!

敲黑板!!小图手把手全面教你绘制发散性“正负”图!!

【PLINK质量控制】哈温平衡是什么?为什么进行哈温平衡过滤?


👇点击阅读原文进入网址