ggplot2 | 单细胞类间比较的火山图 - 经典效果

1.定义画图函数

定义函数。

VolcanoPlot=function(dif, log2FC=log2(1.5), padj=0.05, 
                 label.symbols=NULL, label.max=30,
                 cols=c("#497aa2", "#ae3137"), title=""){
  if( all( !c("log2FoldChange", "padj", "symbol") %in% colnames(dif) )){
    stop("Colnames must include: log2FoldChange, padj, symbol")
  }
  rownames(dif)=dif$symbol
  
  # (1) define up and down
  dif$threshold="ns";
  dif[which(dif$log2FoldChange > log2FC & dif$padj 

2.获得差异基因

直接使用Seurat 4 的函数比较两个类,获得DEG:

deg_all=FindMarkers(scObj, ident.1 = "DSS", ident.2 = "WT", group.by="origin", min.pct = 0.001)
dim(deg_all) #2137    5
head(deg_all)

3.构建中间数据 dif

dif=data.frame(
  symbol=rownames(deg_all),
  log2FoldChange=deg_all$avg_log2FC,
  padj=deg_all$p_val_adj
)

4.画图

# 可以指定要标记的DEG数量,选出FC最大和最小的基因标记
VolcanoPlot(dif, padj=0.05, title="DSS vs WT", label.max = 50)
# 自定义颜色
VolcanoPlot(dif, padj=0.05, title="DSS vs WT", label.max = 50, cols=c("blue", "red"))


# 也可以指定要标记的基因名字
VolcanoPlot(dif, padj=1e-10, title="DSS vs WT -2", 
            label.symbols=dif[ ((abs(dif$log2FoldChange) > 2) & (dif$padj < 1e-50) ) | 
                                      abs(dif$log2FoldChange) > 4,]$symbol )

ggplot2 | 单细胞类间比较的火山图 - 经典效果_第1张图片

ggplot2 | 单细胞类间比较的火山图 - 经典效果_第2张图片

请关注 生物慕课 查看更多教程。

你可能感兴趣的:(R,可视化,r语言)