这是一个旧贴新提,原因是小伙伴说文献中有如下的图,查了一下,不是什么新鲜事,是一个包的功能,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基因:
#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)]
plot1:

#正常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)
plot2:
#添加聚类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'),
【旧事新提】FlexDotPlot包:dot_plot修饰单细胞气泡图
         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"),         )
plot3:
#重新介绍的图#扇形展示表达比例#设置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)
plot4:
#添加背景
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))         )
觉得我们分享有些用的,点个赞再走呗!