3min掌握SCI配色神技,学会你就是组会汇报上最靓的仔!
hi,小伙伴们大家好 上次说到配色的问题,那么这里就彻底把配色给说清楚,也算是给基础绘图总一个基本的总结
首先调用我们的表达数据
#调取上一篇推文的表达数据
library(Seurat)
expr <- data.frame(FetchData(object = scRNA, vars = "LYZ"))
expr$Barcod<-rownames(expr)
ident<-data.frame()
ident<-data.frame(Barcod=names(Idents(object = scRNA)),orig.ident=Idents(object = scRNA))
c<-merge(expr,ident,by='Barcod')
#展示一下数据
head(c)
# Barcod LYZ orig.ident
#1 AAACATACAACCAC-1 1.635873 Memory CD4 T
#2 AAACATTGAGCTAC-1 1.962726 B
#3 AAACATTGATCAGC-1 1.995416 Memory CD4 T
#4 AAACCGTGCTTCCG-1 4.521175 CD14+ Mono
#5 AAACCGTGTATGCG-1 0.000000 NK
#6 AAACGCACTGGTAC-1 1.726902 Memory CD4 T
#其实就是我们Gene和分组信息的对应关系
晨曦解读
上次评论里有小伙伴说配色比较丑
小伙伴们的意见每一条晨曦都看着,针对配色比较丑的问题,因为这几期推文是一个基础向的推文,涉及到的都是一些比较基础的色彩调试,当然在这一期我也会展示更多颜色调节的方式,希望可以帮助到学习中的小伙伴
#简单绘图
library(ggplot2)
ggplot(c,aes(orig.ident,LYZ,fill=orig.ident)) +
geom_boxplot()
#这里的配色采用的是ggplot2内置的映射逻辑,通过映射分组变量来自动调节颜色
晨曦解读
如果不想要ggplot2自主映射颜色
那么就需要涉及到scale系列函数
分别是scale_fill_gradient函数、scale_color_continuous函数
其中柱状图、箱线图等需要填充颜色的适用scale_fill_gradient函数
对于点图、折线图等则使用scale_color_continuous函数
当然有的时候会出现scale_color_manual函数以及scale_color_brewer函数,那么这些又是什么意思呢?
其实大家可以把这个scale系列函数拆成三部分
1. 调节颜色的固定开头scale
2. 针对不同可视化形式的fill以及color
3. 还有就是可以直接指定颜色的manual、调取调色板的brewer、以及使用渐变灰色的grey
这三个部分的随意组合,就组合出来了很多用于颜色设置的函数
但是光说可能比较模糊,我们马上实战起来看看
mycol <- c("#845EC2","#D65DB1","#FF6F91","#FF9671","#FFC75F","#F9F871","#58CDD9","#7A142C","#5D90BA","#431A3D","#91612D","#6E568C","#E0367A","#D8D155","#64495D","#7CC767")
ggplot(c,aes(orig.ident,LYZ,fill=orig.ident)) +
scale_fill_manual(values = mycol)+
geom_boxplot()
晨曦解读
当然更多配色只需要调节mycol变量内的颜色参数即可
这时候会有小伙伴们,颜色参数从哪里获得,推荐下面这个网站颜色参数获取直观,颜值超高
ColorSpace - Color Palettes Generator and Color Gradient Tool (mycolor.space)
然后我们继续
除了通过ggplot2里的函数调节绘图颜色,有一些R包也是十分好用的
我们这里简单介绍几款
首先是ColorBrewer包
这个R包提供了3套配色方案,分别为连续型、极端型以及离散型
library(RColorBrewer)
display.brewer.all()
调用方法很简单,直接和ggplot2中的scale系列函数连用即可
ggplot(c,aes(orig.ident,LYZ,fill=orig.ident)) +
scale_fill_brewer(palette = "Spectral")+
geom_boxplot()
然后下一个R包是ggsci包
这个应该是一个比较出名的R包了,其配色方案主要来自己SCI期刊论文
也是我个人常常使用的配色R包
library(ggsci)
vignette("ggsci")
#通过上面这个命令快速各个杂志期刊配色方案的函数代码
ggplot(c,aes(orig.ident,LYZ,fill=orig.ident)) +
scale_fill_lancet()+
geom_boxplot()
#上面就可以调用柳叶刀杂志的图片配色方案
晨曦解读
这个R包其实是我个人非常常用的一个R包,而且现在很多SCI级别的期刊上包括的配色这个R包都是涉及到的,所以推荐~
然后到这里阶段性总结一下我们常见的配色工具
分别是ggplot2中的scale系列函数结合colorspace网站的颜色参数构建配色体系
另外就是ColorBrewer包的内置调色盘
最后就是ggsci包所提供的主流期刊的配色体系
这三大配色工具可以解决80%以上的配色问题
这里再来介绍一个号称有2100种调色板,内含52个R包的配色包——paletteer包
#安装
install.packages("paletter")
library(paletteer)
安装成功后我们先来探索一下这个R包的组成
head(palettes_d_names)#调取离散型调色板
# package palette length type
#1 awtools a_palette 8 qualitative
#2 awtools ppalette 8 qualitative
#3 awtools bpalette 16 qualitative
#4 awtools gpalette 4 qualitative
#5 awtools mpalette 9 qualitative
#6 awtools spalette 6 qualitative
晨曦解读
这几个变量分别代表着:R包、调色板、调色板中的颜色数量、调色板类型
既然有离散型就会有连续型,我们下面继续看
调取连续型调色板
type package palette
1 gameofthrones baratheon sequential
2 gameofthrones greyjoy sequential
3 gameofthrones jon_snow sequential
4 gameofthrones lannister sequential
5 gameofthrones martell sequential
6 gameofthrones stark sequential
晨曦解读
这几个变量分别表示R包、调色板、调色板类型
然后既然知道了颜色组成,那么我们来看一下如何调用其颜色
scale_color_paletteer_d(palette, direction = 1, dynamic = FALSE, ...)
scale_fill_paletteer_d(palette, direction = 1, dynamic = FALSE, ...)
scale_color_paletteer_c(palette, direction = 1, ...)
scale_fill_paletteer_c(palette, direction = 1, ...)
scale_color_paletteer_binned(palette, direction = 1, ...)
scale_fill_paletteer_binned(palette, direction = 1, ...)
palette
direction
晨曦解读
看到这个熟悉的代码编写,其内在框架依旧是基于ggplot2
到后期小伙伴们会发现,大部分的绘图包都是基于ggplot2语法的,所以这也是前期为什么会有一系列的ggplot2基础教程,晨曦想要写的推文是想要达到:道生一,一生二的局面
扯远啦~,我们继续~
#查看一下每个调色板中的颜色
paletteer_d("nord::frost")
paletteer_d("wesanderson::Royal1", 4)
paletteer_d("Redmonder::dPBIPuOr", 10, type = "continuous")
#绘图实战
ggplot(c,aes(orig.ident,LYZ,fill=orig.ident)) +
geom_boxplot()+
scale_fill_paletteer_d("ggthemes::Traffic")
晨曦解读
提问:晨曦,这个包的配色这么多,我该如何选择呢?
回答:前面有两个函数分别是调取离散/连续调色板的函数,打开以后慢慢对照选择,这个R包的特点就是配色丰富,所以也会有一个相应的缺点就是因为太丰富而造成的选择困难
提问:感觉推文中配出来的颜色还是不好看是为什么?
回答:我个人审美的原因QAQ
好啦,至此晨曦的ggplot2系列教程就算是到这里可以画上一个不算圆满的句号了~
说一下总结吧
我们首先讲解了ggplot2的基本绘图逻辑,讲解了ggpplot2中的一些比较难以理解的概念,随后讲解了配色的选择以及所需要的工具
在晨曦学到现在,个人感觉大部分的可视化R包均是基于ggplot2包,所以其内在的语法都是相似的,一通则百通的道理就是这样
然后给看到这里的小伙伴们一个彩蛋吧
#我们如果看到一张美图应该如何复现的逻辑~
#第一步:定位这个图的样式:火山图、折线图、点图、直方图等等
#第二步:然后首先观察横纵坐标,因为ggplot2是一个叠加类型的函数,所以我们可以先确定底层图片,也就是先画一个底层图
#第三步:添加图内元素,点或者折现或者方块
#第四步:进行颜色及大小的调试
#第五步:完成绘图
晨曦解读
晨曦本人复现的图也很少,其实也不到20张,所以这个只是我个人摸索出来的一个绘图的逻辑,希望可以帮助到正在学习的你们
那么我们就期待在下一个专题再见吧~
我是晨曦,我们下次再见~
主页回复“晨曦可视化03”,即可获得本次推文的所有示例数据以及代码哦~
晨曦单细胞笔记系列传送门
—
END—
撰文丨晨 曦
排版丨四金兄
主编丨小雪球
欢迎大家关注解螺旋生信频道-挑圈联靠公号~
关键词
orig.ident
代码
就是
data.frame
R包
最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。