R使用for循环保存RTCGA包生成的多幅图时PDF首页为空如何解决
R语言RTCGA包批量保存生存曲线PDF出现空白首页的解决方法
问题原因
kmTCGA()为RTCGA包封装的生存曲线绘图函数,返回ggplot类对象,函数内部默认带有隐式绘图逻辑。打开PDF图形设备后,隐式绘图会触发设备生成空白首页,后续显式调用print()输出的绘图会从第二页开始,最终输出的PDF就会出现首页空白的问题。
解决方案
方案1:删除循环内的print()调用
kmTCGA()本身执行时就会直接输出绘图,不需要额外加print(),直接调用即可:
pdf("../mypath/KMplots.pdf", height = 8, width = 10) for(i in names(categories)){ ## 数据集名称遍历 for(j in variables){ ## 目标基因名称遍历 kmTCGA(categories[[i]], explanatory.names = j, pval = T, conf.int = F, risk.table = F) } } dev.off()
方案2:先缓存所有绘图再统一输出
如果需要留存绘图对象做后续处理,可先把所有绘图存入列表,再统一打印到PDF设备,避免隐式绘图触发空白页:
# 缓存所有生存曲线到列表 plot_res <- list() idx <- 1 for(i in names(categories)){ for(j in variables){ plot_res[[idx]] <- kmTCGA(categories[[i]], explanatory.names = j, pval = T, conf.int = F, risk.table = F) idx <- idx + 1 } } # 统一输出到PDF pdf("../mypath/KMplots.pdf", height = 8, width = 10) for (p in plot_res) { print(p) } dev.off()
内容的提问来源于stack exchange,提问作者necrosnake
相关产品推荐
相关产品推荐

