这通常是 ggplot2 范围的问题。ggplot 无法看到 aes() 之外的数据框中的变量。
我可以想到三种方法来解决您的问题:
-
按照@nightstand在评论中推荐的方式去做(也是我推荐的方式)。
data %>%
ggplot() +
geom_point(aes(x = x, y = y), colour = 'red') +
geom_smooth(aes(x = x, y = y), method = NULL, se = TRUE) +
stat_smooth(aes(x = x, y = y), n=nrow(data))
-
如果您确实对 m 变量很着迷,那么您可以调用该数据框作为引用。
data <- data %>%
mutate(m=n())
ggplot(data = data) +
geom_point(aes(x = x, y = y), colour = 'red') +
geom_smooth(aes(x = x, y = y), method = NULL, se = TRUE) +
stat_smooth(aes(x = x, y = y), n=min(data$m))
-
或者,如果您真的只想要没有数据$m 的 min(m),那么一种可能性是先计算 m,然后附加数据框,然后转到 ggplot。
data <- data %>%
mutate(m=n())
attach(data)
ggplot() +
geom_point(aes(x = x, y = y), colour = 'red') +
geom_smooth(aes(x = x, y = y), method = NULL, se = TRUE) +
stat_smooth(aes(x = x, y = y), n=min(m))