不同 ggplot2 图中的重复命令

Duplicate commands in different ggplot2 plots

这似乎是很多人都会遇到的问题,遵循不要重复自己 (DRY) 原则。我在任何地方都找不到答案,也许我一直在寻找错误的术语,这意味着我的问题标题可能不是很好。如果人们对如何为问题命名有更好的建议,我们将不胜感激。

我有几个 ggplot2 图,它们都有一些共同的命令,以及其他差异太大的命令,因此不值得将它们一起写成 loop/function。

如何将常用命令简洁地包含在 one-liner 中?

一个例子可能会解释得更清楚:

common.lines <- "theme_bw() +
                geom_point(size = 2) +
                stat_smooth(method = lm, alpha = 0.6) +
                ylab("Height")"

my.plot <- ggplot(data = my_df, aes(x = "Length", y = "Height")) +
             common.lines

jim.plot <- ggplot(data = jim_df, aes(x = "Width", y = "Height")) +
              common.lines

我的问题是,如何构造common.lines?像上面那样制作一个字符串是行不通的。我还尝试制作一个矢量,然后使用 + 作为分隔符 pasteing。

有什么建议吗?

干杯

您可以将命令放在列表中。

my_df <- data.frame(Length=rnorm(100, 1:100), Height=rnorm(100, 1:100))
jim_df <- data.frame(Width=rnorm(100, sin(seq(1,4*pi,len=100))),
                     Height=rnorm(100, 1:100))
common.lines <- list(theme_bw(), geom_point(size = 2), 
                     stat_smooth(method = lm, alpha = 0.6), ylab("Special Label"))

my.plot <- ggplot(data = my_df, aes(Length, Height)) + common.lines
jim.plot <- ggplot(data = jim_df, aes(Width, Height)) + common.lines
jim.plot