【问题标题】:facet ggplot by span argument of loess smoother黄土平滑器的跨度参数分面ggplot
【发布时间】:2015-02-28 14:14:24
【问题描述】:

我想通过将跨度参数更改为更平滑的黄土来制作单面图(格子样式)。我尝试使用如下的 for 循环,但没有生成绘图。如果我要使用 ggsave 函数,这些图会单独保存。

另外,我想知道是否有更简洁的方法来完成这样的任务?

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)
}

【问题讨论】:

    标签: r ggplot2 smooth loess


    【解决方案1】:

    如果你明确地print 情节(并去掉你额外的' 标记),你的方法会很好:

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

    至于其他方法,我建议将你所有的地块放在一个列表中

    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]))
    }
    

    然后您可以将它们全部绘制在一起,例如,

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

    【讨论】:

    • 您还可以通过将具有跨度值的刻面条添加到每个图来模拟刻面。例如(使用ggplot 而不是qplot):lapply(s, function(span) { ggplot(data.frame(dat,span=paste0("Span = ", span)), aes(x,y)) + geom_point() + geom_smooth(span=span) + facet_grid(. ~ span) })
    猜你喜欢
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多