这是一个旧贴新提,原因是小伙伴说文献中有如下的图,查了一下,不是什么新鲜事,是一个包的功能,FlexDotPlot包对于dotplot的修饰,我们4年前就介绍过这个包(这种Dotplot展示单细胞基因表达),只是没有介绍这种做法。这里重新介绍一下,并详细探究一下这个函数的使用。详细注释内容已发布微信VIP!
github:https://github.com/Simon-Leonard/FlexDotPlot
#load data and packages
install.packages("devtools")devtools::install_github("Simon-Leonard/FlexDotPlot")
library(FlexDotPlot)library(Seurat)library(dplyr)library(ggplot2)
load("./Downloads/PMN_sce.RData")
#marker gene for plot
Idents(PMN_sce) <- 'celltype'markers <- FindAllMarkers(PMN_sce, logfc.threshold = 0.5, min.pct = 0.5,only.pos = T)top_markers <- markers %>% group_by(cluster) %>% top_n(n = 5, wt = avg_log2FC)
#FlexDotPlot包修饰作图的函数dot_plot的input data是dataframe,所以#需要利用seurat的DotPlot画气泡图,然后提取数据p = DotPlot(PMN_sce, features = top_markers$gene) + RotatedAxis()
df <- p$data[,c(3,4,1,2,5)]
#正常plot#我们对数值做一下处理,如果是Seurat的Dotplot函数,那么可以设置min.col来过滤颜色#dot_plot没有这个功能,为了让图展示更加感觉,avg.exp.scaled数值中小于0的就是不表达的,直接设置为0df$avg.exp.scaled <- ifelse(df$avg.exp.scaled <0, 0, df$avg.exp.scaled)
dot_plot(data.to.plot =df, size_var = "pct.exp", col_var = "avg.exp.scaled", size_legend = "PercentnExpressed", col_legend = "AveragenExpression", cols.use = c('#f7fcfd','#e0ecf4','#bfd3e6','#9ebcda','#8c96c6', '#8c6bb1','#88419d','#810f7c','#4d004b'),
shape.scale = 8, x.lab.pos = "bottom", y.lab.pos = "left", x.lab.size.factor = 1, y.lab.size.factor = 1, display_max_sizes = F, transpose =F, size.breaks.number = 5, color.breaks.number = 3)
#添加聚类dot_plot(data.to.plot =df, size_var = "pct.exp", col_var = "avg.exp.scaled", size_legend = "PercentnExpressed", col_legend = "AveragenExpression", cols.use = c('#f7fcfd','#e0ecf4','#bfd3e6','#9ebcda','#8c96c6','#8c6bb1','#88419d','#810f7c','#4d004b'),
 shape.scale = 8, x.lab.pos = "bottom", y.lab.pos = "left", x.lab.size.factor = 1, y.lab.size.factor = 1, display_max_sizes = F, transpose =F, size.breaks.number = 5, color.breaks.number = 3, hclust_method = "ward.D2", dend_x_var = c("avg.exp.scaled"), dend_y_var = c("avg.exp.scaled"), )
#重新介绍的图#扇形展示表达比例#设置shape_var参数
dot_plot(data.to.plot =df, size_var = "pct.exp", col_var = "avg.exp.scaled", shape_var= df$pct.exp,
shape_legend = "PercentnExpressed", col_legend = "AveragenExpression", cols.use = c('#f7fcfd','#e0ecf4','#bfd3e6','#9ebcda','#8c96c6', '#8c6bb1','#88419d','#810f7c','#4d004b'),
shape.scale = 30, x.lab.pos = "bottom", y.lab.pos = "left", x.lab.size.factor = 1, y.lab.size.factor = 1, display_max_sizes = F, transpose =F, size.breaks.number = 5, color.breaks.number = 3)
#添加背景
dot_plot(data.to.plot =df, size_var = "pct.exp", col_var = "avg.exp.scaled", shape_var= df$pct.exp,
shape_legend = "PercentnExpressed", col_legend = "AveragenExpression", cols.use = c('#f7fcfd','#e0ecf4','#bfd3e6','#9ebcda','#8c96c6', '#8c6bb1','#88419d','#810f7c','#4d004b'),
shape.scale = 30, x.lab.pos = "bottom", y.lab.pos = "left", x.lab.size.factor = 1, y.lab.size.factor = 1, display_max_sizes = F, transpose =F, size.breaks.number = 5, color.breaks.number = 3, vertical_coloring = c(rep(alpha("#3F6F76",0.2),5), rep(alpha("#C65840",0.2),5), rep(alpha("#F4CE4B",0.2),5), rep(alpha("#62496F",0.2),5), rep(alpha("#69B7CE",0.2),5)) )
|