DotPlot 的宽高自动设置 | 线性拟合

21 篇文章 0 订阅

1. 线性模型计算width和height

输入是基因集合

scRNA.markers <- FindAllMarkers(scRNA, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25)
#scRNA@misc[["markers"]]=scRNA.markers
#scRNA.markers %>% group_by(cluster) %>% top_n(n = 2, wt = avg_log2FC)

auto.markers=unique(c(
  scRNA.markers %>% group_by(cluster) %>% top_n(n = 4, wt = avg_log2FC) %>% pull(gene)
))

1.width

length(auto.markers)
# x, y
# 55,15
# 87,22
# 129, 30
# lm(y~x, data=data.frame(x=c(55,87,129), y=c(15,22,30)))
# y=0.2021*x+4.0787
pdf_width = 0.2021*length(auto.markers) +4.0787

如果基因集合是自定义的list,还需要考虑list中每个key之间的间距:

pdf_width = 0.2021*length(markers |> unlist() ) +4.0787 + length(markers)*0.2 #add space between gene groups

2.pdf_height

# x,y
# 12, 4.5
# 10, 4
# lm(y~x, data=data.frame(x=c(12,10), y=c(4.5, 4)))
# y=0.25*x+1.5
pdf_height = 0.25*nlevels(sce) +1.5
message(sprintf("pdf size: {width:%s, height:%s}", pdf_width, pdf_height) )

2. 使用该模型

pdf( paste0(outputRoot, keyword, "_05_1.Auto.topN.DotPlot.pdf"), width=pdf_width, height=pdf_height)
DotPlot( sce, #subset(sce, seurat_clusters %in% c(1:8) ), 
         features = auto.markers, cluster.idents = F, cols=c('lightgrey', "red")) + RotatedAxis()+
  ggtitle( paste0("Top N markers of ", keyword ))
#
DotPlot( sce, #subset(sce, seurat_clusters %in% c(1:8) ), 
         features = auto.markers, cluster.idents = T, cols=c('lightgrey', "red")) + RotatedAxis()+
  ggtitle( paste0("Top N markers of ", keyword ))
dev.off()

Ref:

  • https://gitee.com/dawnEve/bioToolKit/blob/dev/R_scripts/single_script/do_Seurat.script.R
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值