【发布时间】:2021-12-02 17:35:58
【问题描述】:
我有一个很长的结果数据框。有 148 次曝光和 148 次结果,每一次都相对于另一次进行了回归(148*148 = 21,904 - df 中的行数)。
我想针对 148 个结果绘制每次曝光的结果 - 所以我想要总共 148 个图。下面的代码对一次曝光执行此操作并生成一个图。
**问题:**如何最好地为所有 148 次曝光执行此操作并导出为多页 PDF 和/或单独的 PDF 文件?
# libraries
library(qs)
library(dplyr)
library(ggplot2)
library(ggrepel)
# make data
set.seed(15)
res_df <- data.frame(exp = randomStrings(N = 148, string_size = 4))
res_df <- data.frame(res_df[rep(seq_len(nrow(res_df)), each = 148), ])
colnames(res_df)[1] <- "exp"
res_df <- mutate(res_df, y = randomStrings(N = 148, string_size = 5),
logp = abs(rnorm(n = 148, mean = 5, sd = 6)),
r = rnorm(n = 148, mean = 0.5, sd = 0.1))
# subset df for individiual plot
subset <- res_df[1,1]
res_df_a <- subset(res_df, exp == subset)
# PLOT
ggplot(res_df_a, aes(x = r, y = logp, label = y)) +
geom_point(data = res_df_a[res_df_a$logp < 10,], color = "grey50") +
geom_text_repel(data = res_df_a[res_df_a$logp > 10,], box.padding = 0.5, max.overlaps = Inf) +
geom_point(data = res_df_a[res_df_a$logp > 10,], color = "red")+
xlab("Variance explained (%)") + ylab("-log10(pvalue)") +
ggtitle("y ~ exp")
【问题讨论】: