保存 ggplot 对象以用于不同的数据集

pur*_*e98 2 r ggplot2

我们都知道我们能做到

p <- ggplot(data)
p + aes(x = funny_hat) + geom_histogram()
Run Code Online (Sandbox Code Playgroud)

但我从未见过相反情况的文档。假设我想存储一堆 ggplot 对象,例如:

geom_boxplot() + stat_compare_means(method = "anova", size = 14, vjust = 1) +
scale_y_continuous(breaks = seq(-2,2.5, 0.5)) + theme(text = element_text(size = 48))
Run Code Online (Sandbox Code Playgroud)

...这样我就可以将所有这些插入不同的数据集,例如

ggplot(data1) + [all my arguments]
ggplot(data2) + [all my arguments]
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用与第一个示例中相同的方法,这将不起作用,但是有没有办法做到这一点?我已经厌倦了复制粘贴...

Tar*_*Jae 5

诀窍是使用一个list元素来制作模板,然后将模板应用到不同的数据框:

library(ggplot2)
library(ggpubr) 

plot_template <- list(
  geom_boxplot(),
  stat_compare_means(method = "anova", size = 14, vjust = 1),
  scale_y_continuous(breaks = seq(-2, 2.5, 0.5)),
  theme(text = element_text(size = 48))
)

# test
ggplot(mtcars, aes(x = factor(gear), y = mpg)) + plot_template

ggplot(iris, aes(x = Species, y = Petal.Length)) + plot_template

Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 在此输入图像描述