跟着高分Nature学复现——单细胞转录组+肿瘤微环境拿下二区16.6分文章






跟着高分Nature学复现——单细胞转录组+肿瘤微环境拿下二区16.6分文章

小云  生信果  2023-12-09 19:00:38

小云最近阅读文献时候发现有关单细胞分析是越来越多,并且许多高分文章中的单细胞图都非常的好看。小云就突发奇想想去复现这些高分文章中的图片,想到他们能发这么高分的文章,这里面图想必加了不少分,毕竟数据可视化才最能体现数据的美观性,才能够吸引读者。所以,我们有时候想不知道如何可视化数据时候,可以借鉴高分文章中的图片,用在自己的文章中。因此呢,小云就找了一篇文章,Single cell transcriptomic analyses implicate an immunosuppressive tumor microenvironment in pancreatic cancer liver metastasisIF16.6,这么高分的文章,小云看了看这篇文章的图,发现许多图都是我们见过的,还很好复现,这些图都是拼接而成的,组成一个非常好看的图。就比如下面这个图b

上图中的图b是不是挺好看的,但是小伙伴发现没,这个图b是我们非常熟悉的图,可能我们平时都绘制过,但是又不一样,小云这里就带小伙伴去复现这个图b.           

我们想要复现这个图,肯定需要从哪里下手,首先就是了解这个图的组成,仔细观察,小云发现这是由两种图组成,一个是堆叠的小提琴图,右边是气泡热图,好了我们知道这两个组图的名字之后就是去实现他们。        

我们从右边的图下手,因为这个文章是单细胞的文章,小云自己也用了自己单细胞数据,小伙伴可以套用数据格式去复现哦。想要一起学习复现的小伙伴可以公众号后台回复“1125”领取代码和示例数据,如果学不会,可以找我们帮您复现,小云不只会做图,很多高分文献思路都可以!        

我们开始载入几个包:

library(scRNAtoolVis) # 小云加载这个包,为了使用这个包的数据, library(Seurat) # dotplot,单细胞绘图使用library(cowplot) # plot_gridhttest <- system.file("extdata", "htdata.RDS", package = "scRNAtoolVis")pbmc <- readRDS(httest)          

然后我们载入数据

# 添加分组    pbmc$groups <- rep(c('stim','control'),each = 1319)# 添加细胞类型pbmc$celltype <- Seurat::Idents(pbmc)
# 载入 markergenedata("top3pbmc.markers")

这个其实就是我们一般单细胞操作官方流程后,跑完第一个数据结果,小伙伴可以直接使用

后面我们可以使用这个数据去绘制图片    

# checkhead(top3pbmc.markers,3)

p <- DotPlot(pbmc,             features = split(top3pbmc.markers$gene, top3pbmc.markers$cluster),             cols = c("#dddddd", "#448444")) +  RotatedAxis() + # 来自Seurat  theme(    panel.border = element_rect(color = "black"),    panel.spacing = unit(1, "mm"),    axis.title = element_blank(),    axis.text.y = element_blank(),  )#设置主题,
p$data$feature.groups2 <- factor(p$data$feature.groups, levels = c("Platelet","DC","NK", "FCGR3A+ Mono","CD8 T","B","Memory CD4 T","CD14+ Mono","Naive CD4 T"))#注释单细胞数据
P

          

这样一来文章中右边的图就大致的绘制出来了,上面小云还加了单细胞的注释结果,更加丰富,但是发现有一些小细节没有处理到位,中间还有分割的线,下面我们在继续绘制,我们对细节的修改需要用到ggplot2中的参数处理来看看如何处理。      

使用ggplot2从头绘制

library(ggh4x)#需要用到里面的函数处理数据library(RColorBrewer)#加载这个包只是为了填充颜色    #下面把数据填充一下,strip <- strip_themed(  background_x = elem_list_rect(fill = brewer.pal(9, "Paired")))#下面绘制图片,从主题颜色等,p$data %>%   ggplot(aes(x = features.plot,             y = id)) +   geom_point(aes(size = pct.exp,                  color = avg.exp.scaled)) +   facet_wrap2(~feature.groups2,               scales = "free_x",               strip = strip,               nrow = 1) + #主题的修正  theme_classic() +   theme(axis.text.x = element_text(angle = 90,                                    hjust = 0.5, #气泡间距                                   vjust = 0.3,                                    color = "black"),        axis.title = element_blank(),        strip.background = element_rect(color = "white"),            axis.text.y = element_blank()) +   scale_color_gradient(low = "#ffffff",#底数据颜色设置                       high = "#448444",                        name = "avg.exp") -> p#上述的绘图,许多都是默认的参数,小伙伴可以方向去使用P#查看一下图

          

这样一来我们右边的图就复现的差不多,对比一下          

发现都已经差不多了,只是颜色的设置,小伙伴对此可以自行去设置,还有小云自己加的单细胞分组信息在上方,小伙伴不喜欢这个单细胞分组可以删除,只需要把strip这个信息注释掉就可以,好了我们实现了右边的图片,去复现一下左边的堆叠小提琴图吧    

我们先载入使用的包

library(Seurat)library(ggpubr)library(ggsignif)

载入我们实例的数据

其实堆叠小提琴图,小伙伴不少见,做单细胞数据都会用得到,来看看如何绘制的

# 加载数据对象#pbmc <- readRDS("pbmc_2k_1.rds")identity <- readRDS("pbmc_2k_2.rds")

features <- c("CD79A", "MS4A1", "CD8A", "CD8B", "LYZ","LGALS3")      

提取几个基因绘制

# 提取数据框子集pbmc <- pbmc[,features]

# 添加细胞name和细胞群身份pbmc$Cell <- rownames(pbmc)pbmc$Idents <- identity对上述数据处理一下
# melt数据变长pbmc <- reshape2::melt(pbmc, id.vars = c("Cell","Idents"), measure.vars = features, variable.name = "Feat", value.name = "Expr")# 查看数据前10行head(pbmc, 10)

下面我们就去绘制图片

#主题theme(大小,颜色),legend p2 <- ggplot(pbmc, aes(Feat, Expr, fill = Feat)) +  geom_violin(scale = "width", adjust = 1, trim = TRUE) +  scale_y_continuous(expand = c(0, 0),                     position="right",                     labels = function(x)#对主题水平的设置c(rep(x = "", times = length(x)-2), x[length(x) - 1], "")) +    facet_grid(rows = vars(Idents), scales = "free", switch = "y") +#下面是对主题的设置theme_cowplot(font_size = 12) +theme(legend.position = "none",        panel.spacing = unit(0, "lines"),#图中线的设置        plot.title = element_text(hjust = 0.5),        panel.background = element_rect(fill = NA, color = "black"),#颜色填充        plot.margin = margin(6, 6, 0, 6, "pt"),#图中小提琴图的间距        strip.background = element_blank(),        strip.text = element_text(face = "bold"),        strip.text.y.left = element_text(angle = 0),        axis.title.x = element_blank(),        axis.ticks.x = element_blank(),        axis.text.x = element_blank()) +ggtitle("") +#添加主题名字,可以不写ylab("Expression Level")#Y轴的名称  #coord_flip()#可以修改横纵坐标
p2

这个图是不是和文章中差不多了

   

一些细节还没处理到位,小伙伴要是需要将小提琴反转可以使用coord_flip()

我们下面对数据颜色的设置一下

spring <- c("#f6bcfd","#8dd3c6","#ffc512","#ffa300","#ff7d00","#ff6581","#f8d90d","#a5da6b","#e578d6","#ffd2d8","#90e4cd","#84dce0","#fe65b3")对颜色赋值library(scales)
show_col(spring,ncol=5)#查看一下有那些颜色


p1 <- ggplot(pbmc, aes(Feat, Expr, color = Feat, fill = Feat)) +      geom_violin(scale = "width", adjust = 1, trim = TRUE) +  scale_y_continuous(expand = c(0, 0),                     position="right",                     labels = function(x)c(rep(x = "", times = length(x)-2), x[length(x) - 1], "")) +facet_grid(rows = vars(Idents), scales = "free", switch = "y") +theme_cowplot(font_size = 12) +theme(legend.position = "none",        panel.spacing = unit(0, "lines"),        plot.title = element_text(hjust = 0.5),        panel.background = element_rect(fill = NA, color = "black"),        plot.margin = margin(6, 6, 0, 6, "pt"),        strip.background = element_blank(),        strip.text = element_text(face = "bold"),        strip.text.y.left = element_text(angle = 0),        axis.title.x = element_blank(),        axis.ticks.x = element_blank(),        axis.text.x = element_blank()) +ggtitle("") +    ylab("Expression Level") +scale_fill_manual(values = spring) +scale_color_manual(values = spring)

和上述代码一样,小伙伴多多理解一下

p1

颜色可能没做到一样,但是也挺好看,那么这两个图我们都绘制完成了,我们就去组合一下这两个图,来看看最终的步骤    

plot_grid(p1,p, align ="h", axis="bt", rel_widths = c(2,7))rel_widths这个可以设置两个组组合的比例

好了,我们的组合图就绘制完成了。对于上述的数据,小伙伴可以使用自己的数据去设置一下,要多多理解代码的意思,其实许多高分文章中的图片都是一步一步组合而来的,理解代码的意思,把自己的图绘制高级起来,小伙伴快去动手试试吧!如果有其他想要复现的内容都可以扫码咨询小云;小云不只会做图,很多高分文献思路都可以进行复现哦。

临床数据挖掘


免疫浸润

孟德尔随机化


单细胞测序


往期推荐