JP_smasher
JP_smasher

Reputation: 981

facet ggplot by span argument of loess smoother

I would like to make a single facetted plot (lattice style) by varying the span parameter to the loess smoother. I tried using a for loop as below but no plot was produced. If I were to use the ggsave function, the plots are saved separately.

In addition, I was wondering if there is a more parsimonious way to do such a task?

x <- rep(1:10,4)
y <- 1.2*x + rnorm(40,0,3)
s <- seq(0.2,0.8,0.1)

# plot the series of plots by varying the span parameter
for (s_i in s) {
    qplot(x, y, geom = 'c('point','smooth'), span = s_i)
}

Upvotes: 3

Views: 545

Answers (1)

Gregor Thomas
Gregor Thomas

Reputation: 146120

Your approach will work just fine if you explicitly print the plot (and get rid of your extra ' mark):

for (s_i in s) {
    print(qplot(x, y, geom = c('point','smooth'), span = s_i))
}

As for other ways to do it, I would recommend putting all your plots in a list

changing_span = list()
for (i in seq_along(s)) {
    changing_span[[i]] <- qplot(x, y, geom = c('point','smooth'), span = s[i]) +
        labs(title = paste("span:", s[i]))
}

Then you can plot all of them together with, e.g.,

library(gridExtra)
do.call(grid.arrange, changing_span)

Upvotes: 3

Related Questions