我们都知道我们能做到
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)
如果我尝试使用与第一个示例中相同的方法,这将不起作用,但是有没有办法做到这一点?我已经厌倦了复制粘贴...
诀窍是使用一个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)