1

我想更改示例图中的 span 参数,示例图

在我为得到这个图而编写的代码中,除了默认的 0.2 之外,我无法让跨度做任何事情。我有一种预感,这与将黄土适当地分配给每个组有关,但我尝试过的方法没有奏效。我制作了一些示例代码来演示 span 参数不会影响下面的 loess fit。

xy <- rbind(data.frame(x=sort(rnorm(n=46, mean=5, sd=2)), y=1:46),data.frame(x=sort(rnorm(n=46, mean=7, sd=3)), y=1:46), data.frame(x=sort(rnorm(n=46, mean=4, sd=7)), y=1:46))


plot.data <- data.frame(group=letters[rep(1:3, each=46)], xy)

ggplot(plot.data, aes(x=x, y=y))+geom_smooth(method=loess, span=0.1, se=T,  col='black') + geom_point(alpha=0.7) + facet_wrap(~group)
4

2 回答 2

3

Span 与 geom_smooth(...) 方法调用“loess”有关,请参阅此链接以获取有用的介绍。

任何超过 1000 个数据点的数据默认为 method = "gam",因为这对于大型数据集更有效。

`geom_smooth()` using method = 'gam'

尝试明确说明方法=黄土,然后设置跨度。

geom_smooth(method = "loess", span = 0.3)

注意:这会成倍地增加图表渲染时间。

于 2017-10-26T10:04:36.760 回答
0

在我看来,这可能与您的数据关系不大,ggplot2而与您的数据有关。观察:

plot.data.a <- plot.data[plot.data$group == 'a', ]
par(mfrow = c(2,2))
for(i in seq(.1, .9, length.out = 4)){
    plot(plot.data.a[,-1], main = paste('Span of', round(i, 2)))
    lines(loess(y ~ x, data = plot.data.a, span = i))
}

在此处输入图像描述

似乎改变跨度对合身几乎没有视觉影响。loess

因此,当您制作情节并改变 时span,似乎很可能ggplot2理解您正在改变span,只是拟合相对没有变化。

于 2016-12-20T14:33:58.867 回答