首页 > 科研绘图 > 新一代配色R包,还不赶快升级你的配色方案?
2022
08-20

新一代配色R包,还不赶快升级你的配色方案?

你的可视化配色终极解决方案

Hi,大家好,我是晨曦

今天这期推文也是来自小伙伴们的私信提问

A同学晨曦,我们进行ggplot2可视化的时候,配色真的很难选,ggsci有分组水平的限制,然后colorspace虽然很方便的可以获得颜色的编码,但是我自己对于审美确实没有审美自信,有没有那种可以很方便的告诉我,我究竟需要选择什么样的颜色的工具?

晨曦.......

那么,这期推文我们就来聊一聊R语言可视化配色的相关话题

引言

我们平时使用的R语言配色工具如下:

1. R包:paletteer包(内置了几乎所有配色R包,配色组合数量2000+;缺点则是需要自己选择)

2. R包:ggSCI包(内置了各大期刊的主流配色;缺点则是有level水平的限制)

3. R包:RColorBrewer包(内置了众多配色;缺点则是需要自己选择)

4. R包:grDevices包与RColorBrewer包类似

5. R包:RImagePaletten包提取文章配色用于自己的可视化;缺点则是有的时候提取不全或者不知道该如何搭配)

6. 网站:ColorSpace网站(选择配色提供颜色代码的网站;缺点则是需要自己选择)

7. 网站:Colordrop网站(选择配色提供颜色代码的网站;缺点则是需要自己选择)

综上所述,很多小伙伴想要得到那种直观的,尽量让我少做选择并且方便的工具,那么晨曦接下来介绍的这块配色工具应该可以满足各位小伙伴的部分需求——cols4all包

代码实战

我们可以很清楚的看到这款R包集合了市面上常见的配色R包,但是,如果仅仅只是单纯的集成显然并没有太多的心意,那么我们就探索一下这个R包更具Fashion的地方吧~




#准备工作 remotes::install_github("mtennekes/cols4all") library(cols4all)

工欲善其事必先利其器



#调出调色板 c4a_gui

我们可以很清楚的看到,运行完上面的一句函数就可以调出一个shiny界面,然后我们可以很方便的在线浏览所需要的配色,其中

左上角Palette Type处可选择色板的类型,包括:

Categorical(分类/离散型色板)

Sequential(渐变/顺序型色板)

Diverging(渐变/发散型色板)

Bivariate(多变量型色板)

这四大类可以供我们进行选择

右边的框则是一些颜色的细节,包括:

Series:该配色来自哪个配色包

Name:该配色的名称

Colorblind-friendly:是否对色盲友好

Intense colors:是否为强烈的色彩组合

Harmonic palette:是否为和谐的色彩组合

Ranking:根据上述三点进行评分并排序(针对当前类型色板和颜色数)

那么下面我们就通过这个配色工具来进行一次可视化的整体操作













#准备工作 library(ggplot2) library(tidyverse) library(cols4all) #整理输入绘图的输入数据 data(iris) df <- iris %>% select(Sepal.Length,Species) #然后我们需要绘制一个展示不同鸢尾花物种Sepal.Length变量情况的箱线图 ggplot(df,aes(x = Species,y = Sepal.Length,color = Species))+ geom_boxplot+ theme_classic

这是最基本的绘图,然后我们发现这时候的配色其实就是ggplot2基于映射思想所选择的经典配色,那么现在我们通过我们的配色工具来修改一下配色












#调出调色板 c4a_gui #调出调色板以后我们就可以在线选择想要的颜色,然后我们只需要复制该配色的名称,也就是name即可 #因为我们这个是离散型变量,所以我们需要选择离散型变量的配色需求 mycol <- c4a("pastel2", 3) #[1] "#B3E2CD" "#FDCDAC" "#CBD5E8" #选择3种颜色 #可视化 ggplot(df,aes(x = Species,y = Sepal.Length ))+ geom_boxplot(color = mycol)+ theme_classic

然后这个时候我们的颜色其实就已经作用上去了,但是我们现在需要解决另一个问题,就是我们的图例不见了~

ggplot2基于映射的时候是可以自动生成图例的,当然我们也可以通过代码或者AI生成图例,但是这里我们想要基于ggplot2自动生成图例,因为这样比较方便,那么这个时候我们就需要把这个配色工具嵌入到ggplot2体系中,好在作者已经想到了这一点,所以我们可以尝试使用下面的代码






ggplot(df,aes(x = Species,y = Sepal.Length,color = Species))+ geom_boxplot+ scale_color_discrete_c4a_div("pastel2")+ guides(color=guide_legend(title = "group"))+ theme_classic

这样子我们就成功把图例放了上去,逻辑就是我需要提供给函数一个映射分组的关系,然后通过配色函数覆盖原有的配色关系即可~

这个时候可能会有小伙伴问,这句scale_color_discrete_c4a_div函数可不可以解析一下:









#解析 scale_<aesthetic>_<mapping>_c4a_<type> #<aesthetic>这块可以填写:color和fill,具体作用参考ggplot2r #<mapping>这块可以填写:discrete, continuous和binned,最常用的是前两个,一个是离散,一个是连续 #<type>这块可以填写:cat, seq和div则对应前面三种颜色类型,当然选定颜色以后调节这块对图片貌似没有什么影响 #常用的函数组合 scale_color_continuous_c4a_seq #连续型 scale_color_discrete_c4a_cat #离散型

当然,我们如果通过ggoubr可能会更加简单,如下:







#ggpubr library(ggpubr) mycol <- c4a("pastel2", 3) ggboxplot(data = df, x = 'Species', y = 'Sepal.Length', fill = 'Species', palette = mycol)

好啦,本期推文到这里就结束啦~

欢迎各位小伙伴有感兴趣的内容在评论区留言,晨曦看到以后会挑选在自己学习范围内的进行学习并整理成教程来和大家互相学习的~

我是晨曦,我们下期再见

参考教程:

1.https://mp.weixin.qq.com/s/_sRN_-8PenGm3ZuAbYatwQ

2.mtennekes/cols4all: Colors for all (R package) (github.com)

3.(28条消息) R语言ggplot2图例标签、标题、顺序修改和删除 小Li先生的博客-CSDN博客 ggplot2修改图例标签

最后编辑:
作者:萌小白
一个热爱网络的青年!

发布评论

表情