ixxmu / mp_duty

抓取网络文章到github issues保存
https://archives.duty-machine.now.sh/
116 stars 30 forks source link

生信实操丨只需学会这几招,让你的单细胞测序分析图向CNS看齐! #1371

Closed ixxmu closed 2 years ago

ixxmu commented 2 years ago

https://mp.weixin.qq.com/s/B2PI19sdNkiE_ZGeguqcuQ

github-actions[bot] commented 2 years ago

生信实操丨只需学会这几招,让你的单细胞测序分析图向CNS看齐! by i生信

单细胞转录组学测序是目前比较火热的组学技术,单细胞测序在很多高分文章中露脸的次数非常频繁。然而数据拿到手,分析后的可视化也是发文章时的重点内容。看到CNS或者其他高质量文章中单细胞的可视化总是一种高大上的感觉,可是自己手里的数据可视化却是与别人有很大差距。那么,接下来就随着笔者初探单细胞作图的修饰,抛弃默认出图,修饰作图,提高档次,向好的文章看齐!也让自己的数据有一个更好的呈现!


为了方便演示,示例数据我们采用Seurat官方提供的PBMC单细胞数据。首先加载数据。

1.library(SeuratData) #加载seurat数据集  2.InstallData("pbmc3k")  3.data("pbmc3k")  PBMC <- pbmc3k.final 

可能到这里会发现一个错误。

1.#ERROR  2.#Error in eval(call("@", object, slot)):   3.#"images"槽名不存在于"Seurat"类别对象中  

这是因为加载的数据时Seurat较早的版本,目前已经更新到4.0了,所以需要将其转换一下。(知识点:例如在公共数据库挖掘时,拿到别人Seurat2的数据时,就可以用下面的函数转化

PBMC = UpdateSeuratObject(object = PBMC)#旧版的seurat对象转变为新版

数据准备完成了,就开始真正的操作吧!


1、UMAP聚类图的修饰

所有的画图软件都会有一个默认的配色,单细胞作图的seurat也不例外。但是如果你阅读了足够多的单细胞好文章,就会发现,这些文章基本无一例外的,都不会使用默认的配色,而是选择自己配色,让图形可视化更加好看。


一般默认情况下,seurat做出的UMAP图如下,这种配色其实很普通,如果整个文章都是这个色调,看起来不是很好。

1.#普通展示细胞聚类图  DimPlot(PBMC, label = T)+NoLegend()

如果稍加修饰,修改坐标轴,去除坐标轴刻度,自定义添加标题,给UMAP图加上边框等等修饰,立马就能看出区别。但是相比于高分文章,还是有点欠缺。

1.DimPlot(PBMC, label = T)+  2.  NoLegend()+labs(x = "UMAP1", y = "UMAP2") +   3.  theme(axis.text.y = element_blank(),   4.        axis.ticks.y = element_blank(),   5.        axis.text.x = element_blank(),   6.        axis.ticks.x = element_blank())+  7.  theme(panel.border = element_rect(fill=NA,color="black", size=1, linetype="solid"))  #加边框


其实关键的还是对颜色的修饰,以两篇高分文章的配色为例看看效果:

#第一种配色方案来源于《Cell》文章:DOI:10.1016/j.cell.2021.05.013。

1.library(paletteer) #提供了 R 编程环境中提供的数百种其他调色板的组合集合,详情可以查看此包,总有你满意的方案  2.pal <- paletteer_d("ggsci::nrc_npg")[c(1,3,4,9,5,2,6,8,10)] #有几群细胞需要标记就选几种颜色  3.DimPlot(PBMC, label = T,   4.        cols= pal, #设置颜色  5.        pt.size = 1.5,#设置点的大小  6.        repel = T)+#标注有点挤,repel=T可以让排列更加合理          NoLegend() 

是不是感觉有那“味”了!

#第二种配色方案来源于《Nature communications》发表的文章:https://www.nature.com/articles/s41467-021-25246-7#Sec24

1.library(RColorBrewer)#配置自己需要的颜色  2.cell_type_cols <- c(brewer.pal(9, "Set1"), "#FF34B3","#BC8F8F","#20B2AA","#00F5FF","#FFA500","#ADFF2F","#FF6A6A","#7FFFD4""#AB82FF","#90EE90","#00CD00","#008B8B","#6495ED","#FFC1C1","#CD5C5C","#8B008B","#FF3030""#7CFC00","#000000","#708090")  3.DimPlot(PBMC, label = T,   4.        cols= cell_type_cols, #设置颜色  5.        pt.size = 1.5,#设置点的大小  6.        repel = T)+#标注有点挤,repel=T可以让排列更加合理  7.        NoLegend()  


这样做出的图更加好看,符合高分文章的标准!

UMAP图还有一个重要的作用是是展示某些基因在cluster中的表达。

1.#默认作图  2.FeaturePlot(PBMC, features = "S100A8")  3.#修饰图片  4.mycolor <- c('lightgrey''blue','seagreen2')#设置颜色  5.FeaturePlot(PBMC, features = 'S100A8',cols = mycolor, pt.size = 1.5)+    theme(panel.border = element_rect(fill=NA,color="black", size=1, linetype="solid"))#加边框 



2、热图修饰

热图是单细胞测序数据分析中展示marker基因的重要方式,一般使用DoHeatmap函数实现。默认的图片也是可以的,但是缺乏生动的感觉,所以很少文章用默认的画图,多多少少也是进行了修饰。


这里用每个cluster前top3基因演示,默认的绘图如下:

1.DoHeatmap(PBMC,   2.          features = as.character(unique(top3$gene)),   3.          group.by = "seurat_clusters",  4.          assay = "RNA")  

我们对热图配色进行修改,看起来会顺眼很多!

1.DoHeatmap(PBMC,   2.          features = as.character(unique(top3$gene)),   3.          group.by = "seurat_clusters",  4.          assay = "RNA",  5.          group.colors = c("#C77CFF","#7CAE00","#00BFC4","#F8766D","#AB82FF","#90EE90","#00CD00","#008B8B","#FFA500"))+  #设置组别颜色6. scale_fill_gradientn(ccolors = c("navy","white","firebrick3"))#设置热图颜色  

看这个热图,其实我们可以发现,4群和6群的细胞marker基因表达一致,但是热图是按照0-8这个顺序排列的,如果将顺序调整一下,自定义cluster的排序,会让结果看起来会更加明显。

1.PBMC$seurat_clusters <- factor(x = PBMC$seurat_clusters, levels = c('0','1','2','3','4','6','5','7','8'))  2.DoHeatmap(PBMC,   3.          features = as.character(unique(top3$gene)),   4.          group.by = "seurat_clusters",  5.          assay = "RNA",  6.          group.colors = c("#C77CFF","#7CAE00","#00BFC4","#F8766D""#AB82FF","#90EE90","#00CD00","#008B8B","#FFA500"))+ #设置组别颜色7.  scale_fill_gradientn(ccolors = c("navy","white","firebrick3"))#设置热图颜色  

当然了,以上的改变我们都是在Seurat默认画图函数的基础上修饰得到的,如果要通过marker基因从头画热图,则需要提取表达矩阵和分组信息,用Heatmap来做。具体已经有人做了这个工作,可以参考链接:

https://www.it610.com/article/1211113345411813376.html


3、改造小提琴图

小提琴图也是文章中最常见的图,例如下图,也是比较好看的,可以用于展示marker基因。

(文章截图)【1】


但是R语言画出来的小提琴图只能单独展示一个基因的表达,笔者在查阅后发现,文章中这种小提琴图基本是用Python画的,这就很不友好,总不能为了一个图学python吧,也太费时间了。不过还好,有人已经通过改造,出了一个包,帮我们解决这个问题(感谢分享者)。

1.install.packages("remotes")  2.remotes::install_github("lyc-1995/MySeuratWrappers")#通过链接安装包  3.library(MySeuratWrappers)  4.#需要展示的基因  5.markers <- c('CD3D''S100A8''S100A9''CD79A''CCL5''NKG7''GZMA''IL32''CD4''CD8A''LTB''FCN1''MS4A1''SPON2','FCER1A','SERPINF1''TMEM40''CD3E')  6.my36colors <-c('#E5D2DD''#53A85F''#F1BB72''#F3B1A0''#D6E7A3''#57C3F3''#476D87''#E95C59''#E59CC4''#AB3282''#23452F''#BD956A''#8C549C''#585658''#9FA3A8''#E0D4CA''#5F3D69''#C5DEBA''#58A4C3''#E4C755''#F7F398''#AA9A59''#E63863''#E39A35''#C1E6F3''#6778AE''#91D0BE''#B53E2B''#712820''#DCC1DD''#CCE0F5',  '#CCC9E6''#625D9E''#68A180''#3A6963''#968175')#颜色设置  7.VlnPlot(PBMC, features = markers,  8.        stacked=T,pt.size=0,  9.        cols = my36colors,#颜色  10.        direction = "horizontal"#水平作图  11.        x.lab = '', y.lab = '')+#横纵轴不标记任何东西  12.  theme(axis.text.x = element_blank(),   13.      axis.ticks.x = element_blank())#不显示坐标刻度 

最后利用AI将图片稍加修饰,就可以得到与别人文章中一样的图了。


4、Dotplot气泡图的修饰

DotPlot函数可以展示感兴趣基因的表达量,也是发文章比较喜欢用的图,默认的图形如下:

虽然看起来也可以,但是看起来没有很惊艳,如果对于颜色和外形做点修饰,会更加吸引眼球,为自己文章增色不少!

1.#dotplot的改造  2.DotPlot(PBMC, features = markers)+coord_flip()+theme_bw()+#去除背景,旋转图片  3.  theme(panel.grid = element_blank(),  4.        axis.text.x=element_text(angle=90,hjust = 1,vjust=0.5))+#文字90度呈现  5.  scale_color_gradientn(values = seq(0,1,0.2),ccolours = c('#330066','#336699','#66CC66','#FFCC33'))+#颜色渐变设置  6.  labs(x=NULL,y=NULL)+guides(size=guide_legend(order=3)) 


以上就是单细胞基础作图的一些修饰,只要用心,多看文章,向高分文章看齐,让自己的文章也更加显眼和惊艳!数据分析很重要,可视化也是非常重要的一部分,呈现效果好的话,对于自己的文章和数据都是锦上添花的作用。


参考文献:

【1】Wu, X., Liu, Y., Jin, S. et al. Single-cell sequencing of immune cells from anticitrullinated peptide antibody positive and negative rheumatoid arthritis. Nat Commun 12, 4977 (2021). https://doi.org/10.1038/s41467-021-25246-7


END


注:本推文未经许可禁止转载。

阅读推荐:


欢迎扫描加入我们的分学科新社群