在ggplot中添加观察值的geom_rug

时间:2016-03-02 19:10:29

标签: r ggplot2

使用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数据框中的新预测数据从图中的原始数据中包含观测值的地毯(如上所示的子集)?

提前致谢!

1 个答案:

答案 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来自寻找不存在的列。