本系列推送旨在带领生信零基础的科研人一起学习常见R包相关使用方法以及变量设置。
上一期我们介绍了R包的重要性、基本结构以及我们未来的分享框架,本期就进入实战分享啦,我们使用的数据仍然是我们单细胞系列人血管细胞的数据(单细胞测序 | 第12期. 单细胞分析数据下载、导入和合并)。首先我们要分享的R包是Seurat-Dotplot函数。
往期回顾:
MASCU
一、Dotplot功能
Function of Dotplot
二、开发者信息
Developer information
三、Dotplot实战
Dotplot practice
可调控参数展示:
install.packages('Seurat')
library(Seurat)
#相关可调整参数展示
DotPlot(
object, # Seurat 对象
features, #可以是向量或者成组的基因list
assay = NULL, #默认是active assay,一般不用管
cols = c("lightgrey", "blue"), #颜色范围默认是灰色和蓝色
col.min = -2.5, #颜色比例相关设置,默认为-2.5
col.max = 2.5, #默认为2.5
dot.scale = 6, #大小相关设置,默认是6
idents = NULL, #可以只展示某些cluster,默认是all
group.by = NULL, #制定分组变量,例如“Group”、“celltype”
split.by = NULL, #根据一个元数据变量来拆分点图,例如 "condition" 或 "treatment",可以将同一细胞类型在不同条件下的表达情况分开展示。
cluster.idents = FALSE, #是否根据细胞的标识符(idents)进行聚类。默认值为 FALSE
scale = TRUE, #就是scale data
scale.by = "radius", # "radius" 使点的面积与基因表达的百分比成正比,而 "size" 使点的半径与表达百分比成正比
scale.min = NA, #可以对于缩放后的值进行限制
scale.max = NA
)
接下来我们通过实际代码演示包参数调整后的不同结果。
1. 基础图形
Dotplot1 <- DotPlot(Hu_AO_db_QC2,features ="ACTA2")
#有下方两种方法,效果是一样的
Dotplot1 <- DotPlot(Hu_AO_db_QC2,features ="ACTA2",cols =c("#f0dd93", "#bd4335" ))
Dotplot1 <- DotPlot(Hu_AO_db_QC2,features ="ACTA2")+
scale_colour_gradientn(colors = c("#f0dd93", "#bd4335")
col.min和col.max的作用是将标准化后的表达量中低于col.min的替换为col.min,高于col.max的替换为col.max。默认是(-2.5,2.5)。如果设置为(0, 2.5),我们可以看Average Expression发现低于0的负值全部被替换为了0。
Dotplot1 <- DotPlot(Hu_AO_db_QC2,features ="ACTA2",cols =c("#f0dd93", "#bd4335" ),
col.min = 0,
col.max=2.5)
4. scale
Dotplot1 <- DotPlot(Hu_AO_db_QC2,features ="ACTA2",cols =c("#f0dd93", "#bd4335" ),
scale=F)
5. dot.scale
Dotplot1 <- DotPlot(Hu_AO_db_QC2,features ="ACTA2",cols =c("#f0dd93", "#bd4335" ),
dot.scale = 1)
scale.by默认是radius,结果如原始图形所示,还可选的一种是size,如下图所示,其实差别并不是太大。
Dotplot1 <- DotPlot(Hu_AO_db_QC2,features ="ACTA2",cols =c("#f0dd93", "#bd4335" ),
scale.by = "size")
scale.by调整为“size”
Dotplot1 <- DotPlot(Hu_AO_db_QC2,features ="ACTA2",cols =c("#f0dd93", "#bd4335" ),
scale.min = 0,
scale.max = 100)
8. group.by/split.by
Idents(Hu_AO_db_QC2) <- "Group"
Split by则是可以在group.by的基础上再把Identity分为更细的群,使用不多,大家可以尝试一下。
最后给大家一个额外目的的代码,如果想要展示某个基因在不同分组(下图纵坐标A、B、C)以及细胞亚群(下图横坐标)的气泡图,需要提取每一个细胞亚群的Seurat对象画该基因的气泡图,最后再拼接起来。如下所示:
list_V <- c("Anxa1")
Macrophages <- subset(Seurat_object,Major_celltype=="Macrophages")
Idents(Macrophages ) <- "Group"
p1 <- DotPlot(Macrophages, features = list_V,assay = "RNA")+ labs(x = "Macrophages")+
theme(axis.text.x = element_text(angle = 45,hjust = 1,vjust=1),legend.position="none",
panel.background=element_blank(),
panel.spacing = unit(1,"line"),
panel.border=element_rect(color="black",fill=NA,size=1),
axis.title.y=element_blank())+
#axis.text.y = element_blank()) + # 隐藏 Y 轴刻度标签
scale_colour_gradientn(colors = c("#7795bc","white","#f0dd93","#bd4335"))
FBs <- subset(Seurat_object,Major_celltype=="FBs")
Idents(FBs ) <- "Group"
p2 <- DotPlot(FBs, features = list_V,assay = "RNA")+ labs(x = "FBs")+
theme(axis.text.x = element_text(angle = 45,hjust = 1,vjust=1),legend.position="none",
panel.background=element_blank(),
panel.spacing = unit(1,"line"),
panel.border=element_rect(color="black",fill=NA,size=1),
axis.title.y=element_blank(),
axis.text.y = element_blank()) + # 隐藏 Y 轴刻度标签
scale_colour_gradientn(colors = c("#7795bc","white","#f0dd93","#bd4335"))
# … 如此重复
p11 <- DotPlot(CCs, features = list_V, assay = "RNA") + labs(x = "CCs") +
theme(axis.text.x = element_text(angle = 45, hjust = 1, vjust = 1), #legend.position = "none",
panel.background = element_blank(),
panel.spacing = unit(1, "line"),
panel.border = element_rect(color = "black", fill = NA, size = 1),
axis.title.y = element_blank(),
axis.text.y = element_blank()) +
scale_colour_gradientn(colors = c("#7795bc", "white", "#f0dd93", "#bd4335"))
pdf(paste0('path/DotPlot_', gene, '.pdf'), width = 22, height = 5)
print(p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8 + p9 + p10 + p11 + plot_layout(nrow = 1))
dev.off()
///期待已久 R语言与组学交流群!
Chat Group
#2024#
请添加下方微信,备注:“R语言与组学_互助交流群” 将拉入群中。