在gomplot中标记geom_smooth阈值之外的值

时间:2015-08-12 08:31:37

标签: r ggplot2

我想在ggplot中标记值,只要它们在置信区间(geom_smooth区域)之外。以下是我可以标记所有内容的示例。

a <- sample(1:15)
b <- sample(-6:-20)
c <-sample(letters,15)
x1 <- data.frame(a, b, c)

gg <- ggplot(x1, aes(x = a, y = b)) + labs(x = "New x label", y= "New x label") + 
  geom_point()+ geom_smooth(method=lm) + geom_text(aes(label=c),hjust=2, vjust=1) 

1 个答案:

答案 0 :(得分:3)

您可以在ggplot调用之前进行拟合,并为置信区域之外的点创建一个带标签的变量。

## Get fit, and make a variable with labels for points outside conf. interval
fit <- lm(b ~ a)
dat <- predict(fit, interval="confidence")
x1$inside <- ifelse(x1$b < dat[,"upr"] & x1$b > dat[,"lwr"], "", as.character(x1$c))

gg <- ggplot(x1, aes(x = a, y = b)) +
  labs(x = "New x label", y= "New x label") + 
  geom_point() +
  geom_smooth(method=lm) + geom_text(aes(label=inside),hjust=2, vjust=1)
gg

enter image description here

另一种选择是使用ggplot_buildggplot中提取数据,并使用它来确定应标记哪些点。

## Use this to get data about the curve
info <- ggplot_build(gg)[[1]][[2]]