还在为绘制配色担心?小图教你用RColorBrewer包选择完美的配色!!
点击蓝字
关注小图
小伙伴平时绘制不少图片,但是往往因为配色的问题而困扰,总是到不到很好看的配色,自己明明选择几个好看的颜色,组合在一来完全不搭配,不懂得如何使用配色的搭配,小图在这里教大家一个方法,使用R语言颜色相关包RColorBrewer,这个包不仅能提供好看的配色,还可以根据我们平时绘图的类型去选择不同的颜色,是不是听起来很有意思?
下面我们先看一下这三个部分有哪些颜色组成:
library(RColorBrewer)
library(ggplot2)
display.brewer.all() #展示所有的色板
我们可以将颜色打印出来,这里小图使用Set3进行颜色举例
pal<-brewer.pal(8,'Set3')# 展示'Set3'色板中8个颜色
pal
display.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)
往期推荐 |
|
|
|
👇点击阅读原文进入网址