使用Snakemake输出Seurat FeaturePlot多页PDF为空问题求助
解决Seurat循环生成FeaturePlot输出空PDF的问题
问题根源:Seurat的
FeaturePlot返回ggplot类对象,在循环中直接调用该函数不会自动将图像渲染到PDF设备,必须显式调用print()函数触发绘图。另外你设置了onefile=FALSE,这会为每个图生成单独的PDF文件,而非单PDF多页,可能和你的需求不符。修正后的代码:
# 若要单PDF文件包含所有图(每页一张),设置onefile=TRUE pdf(file = snakemake@output[['GeneLabel']], onefile=TRUE) vec <- c("DKC1", "NOP10", "WRAP53", "POT1", "PARN") for(i in vec){ # 显式打印ggplot对象到PDF设备 print(FeaturePlot(cts.seurat.obj, features = c(i))) } dev.off() # 无需额外调用graphics.off(),dev.off()已关闭当前PDF设备
- 额外检查项:
- 确认
cts.seurat.obj是有效的Seurat对象,且包含你指定的基因(可通过rownames(cts.seurat.obj@assays$RNA@data)验证) - 确认Snakemake输出路径
snakemake@output[['GeneLabel']]是合法可写的路径 - 若确实需要每个基因单独生成PDF文件,保留
onefile=FALSE,但此时输出文件名需要包含变量(比如snakemake@output[[i]]),否则后续图会覆盖前一个
- 确认
内容的提问来源于stack exchange,提问作者Genetics
相关产品推荐
相关产品推荐

