使用goats
包中的ResourceSelection
数据集,我可以使用ELEVATION
查看STATUS
与二进制响应(glm
)之间的关系。
library(ResourceSelection)
library(ggplot2)
mod <- glm(STATUS ~ ELEVATION, family=binomial, data = goats)
summary(mod)
然后,我想预测更大范围的ELEVATION
并使用以下代码进行预测。
df <- data.frame(ELEVATION = seq(0,5000,1))
df$Preds <- predict(mod, newdata = df, type="response")
ggplot(df, aes(x=ELEVATION, y = Preds)) + geom_point()
现在,使用生成的ggplot
如何在图的底部添加地毯,以便在ELEVATION
时显示goats
数据集中STATUS == 1
的观测值}。例如我想要一块显示goats$ELEVATION[goats$STATUS == 1]
我尝试添加geom_rug()
,但不确定如何包含goats
数据框中的值,而不是我在df
代码中使用的ggplot
。换句话说,如何使用df
数据框中的新预测数据从图中的原始数据中包含观测值的地毯(如上所示的子集)?
提前致谢!
答案 0 :(得分:2)
geom_rug
有一个数据参数(所有geoms都有),所以你应该给它想要绘制的数据。
ggplot(df, aes(x=ELEVATION, y = Preds)) + geom_point() +
geom_rug(data = subset(goats, STATUS == 1),
aes(x = ELEVATION), inherit.aes = F)
在这种情况下,您映射y = Preds
,这是goats
数据中不存在的列,因此我们需要使用山羊数据为地毯图层设置inherit.aes = F
以防止ggplot来自寻找不存在的列。