前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >🤩 RColorBrewer | 再多的配色也能轻松搞定!~(二)

🤩 RColorBrewer | 再多的配色也能轻松搞定!~(二)

作者头像
生信漫卷
发布2022-10-31 17:16:22
1.8K0
发布2022-10-31 17:16:22
举报
文章被收录于专栏:R语言及实用科研软件

1写在前面

之前介绍了使用ggsci包进行配色,颜值很高,但有时候你可能需要更多的颜色。 本期介绍一下RColorBrewer包,万金油包,几乎适用任何情况。😘

2用到的包

代码语言:javascript
复制
rm(list = ls())
library(tidyverse)
library(RColorBrewer)
library(patchwork)

3示例数据

本期就用大名鼎鼎的iris吧。

代码语言:javascript
复制
dat <- iris

4查看所有配色

代码语言:javascript
复制
display.brewer.all()

Note! 这个包里包含3种配色,sequential, diverging, 和qualitative。 🤩

sequential: Blues,BuGn, BuPu, GnBu, Greens, Greys, Oranges, OrRd, PuBu, PuBuGn, PuRd, Purples, RdPu, Reds, YlGn, YlGnBu, YlOrBr, YlOrRd。(颜色由渐变。) ↗️

Qualitative: Accent, Dark2, Paired, Pastel1, Pastel2, Set1, Set2, Set3。(颜色区分较大,适合分类变量,如分组变量等。) 🔠

Diverging: BrBG, PiYG, PRGn, PuOr, RdBu, RdGy, RdYlBu, RdYlGn, Spectral。(颜色由--,适合heatmap等。) ↘️ ➡️ ↗️

5详细查看

5.1 展示配色

熟悉了配色以后,你可能只想看一个配色方案,可以这样做:

代码语言:javascript
复制
display.brewer.pal(n = 8, name = 'Dark2')

5.2 获取色号

代码语言:javascript
复制
brewer.pal(n = 8, name = "Dark2")

6应用配色

这里我们以ggplot绘图为例。

6.1 初步绘图

代码语言:javascript
复制
bp <- ggplot(dat, aes(Species, Sepal.Length)) + 
  geom_boxplot(aes(fill = Species)) +
  theme_minimal() +
  theme(legend.position = "top")


sp <- ggplot(dat, aes(Sepal.Length, Sepal.Width)) + 
  geom_point(aes(color = Species)) +
  theme_minimal()+
  theme(legend.position = "top")
bp + sp

6.2 更改配色

这里我们以改变分组颜色为例,选用Dark2配色。

代码语言:javascript
复制
bp2 <- bp + scale_fill_brewer(palette = "Dark2")

sp2 <- sp + scale_color_brewer(palette = "Dark2")

bp2 + sp2

6.3 base绘图中的应用

这里补充一下再base绘图时如何应用brewer.pal函数。

代码语言:javascript
复制
barplot(c(4,10,11, 7), col = brewer.pal(n = 4, name = "RdBu"))

7颜色不够怎么办

Q: 细心的小伙伴可能发现了,这个配色最多的也才十几个,要是我需要的配色多于这个数怎么办呢? A: ok~, 这里提供一下解决方案。

7.1 初步绘图

这里大家可以发现,用scale_color_brewer函数进行配色时,颜色是不够的,因为Set2只有8个配色,所以很多点都不显示了。

代码语言:javascript
复制
dat <- dat %>% 
  mutate(., cat = rep(1:30, 5))

p1 <- ggplot(dat, aes(Sepal.Length, Sepal.Width)) + 
  geom_point(aes(color = factor(cat))) +
  theme_bw()
  
p2 <- ggplot(dat, aes(Sepal.Length, Sepal.Width)) + 
  geom_point(aes(color = factor(cat))) +
  theme_bw()+
  scale_color_brewer(palette = "Set2")

p1 + p2

7.2 更多颜色

在我们的示例数据中cat包含30个分类,所以我们至少要生成30个颜色才行,用到的函数是colorRampPalette

代码语言:javascript
复制
colourCount <-  length(unique(dat$cat))
 
ggplot(dat, aes(Sepal.Length, Sepal.Width)) + 
  geom_point(aes(color = factor(cat))) +
  theme_bw()+
  scale_color_manual(values = colorRampPalette(brewer.pal(8, "Set2"))(colourCount))

最后祝大家早日不卷!~


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信漫卷 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1写在前面
  • 2用到的包
  • 3示例数据
  • 4查看所有配色
  • 5详细查看
    • 5.1 展示配色
      • 5.2 获取色号
      • 6应用配色
        • 6.1 初步绘图
          • 6.2 更改配色
            • 6.3 base绘图中的应用
            • 7颜色不够怎么办
              • 7.1 初步绘图
                • 7.2 更多颜色
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档