我的数据有3个因子级别,每个级别都有x和y坐标。我正在使用ggplot创建一个散点图,我想添加一个平滑的。但是,我希望光滑只使用3个因子级别中的2个。结果应该是这两个因子水平中的数据点的单一拟合,但是所有3个级别都是分散的。
示例:
library(ggplot2)
set.seed(123)
data <- data.frame(x=rnorm(300), y=rnorm(300), f=rep(c("a","b","c"), 100))
ggplot(data, aes(x,y,color=f)) +
geom_point() +
stat_smooth(method="gam", formula=y~s(x), se=F)
ggplot(data[data$f %in% c("a","b"),], aes(x,y)) +
geom_point(aes(color=f)) +
stat_smooth(method="gam", formula=y~s(x), se=F)
如您所见,第一张图片分别为所有因素平滑。第二个结合了因子级别“a”和“b”的数据,但那是因为我从数据中删除了“c”。
如何保留第一张图像的散点图并覆盖第二张图像的平滑拟合?
答案 0 :(得分:0)
stat_smooth
有一个data
参数,可用于构建子集:
ggplot(data, aes(x,y,color=f)) +
geom_point() +
stat_smooth(data=subset(data, f!="c"),
inherit.aes=F, aes(x, y),
method="gam", formula=y~s(x),
se=F)
此外,您可以使用inherit.aes=FALSE
更改美学映射。