1. 线性模型计算width和height
# 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
#
# 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