我确信这将是一个“哦,天哪”的简单答案,但我总是无法理解 ggplot2 (0.9.3) 的基本范式。使用以下数据和辅助函数:
ltd <- data.frame(r = c(rnorm(5, 5, 1.5), rnorm(5, 8, 2)),
f1 = c(rep("L", 5), rep("H", 5)))
seXy <- function (x) {
m <- mean(na.omit(x))
se <- sd(x, na.rm = TRUE)/sqrt(length(na.omit(x)))
u <- m + se
l <- m - se
c(y = m, ymin = l, ymax = u)
}
此qplot
请求工作正常:
tp <- qplot(x = f1, y = r, data = ltd, geom = "point")
tp <- tp + stat_summary(fun.data = "seXy", color = "red", geom = "linerange")
print(tp)
但是这个ggplot2
请求没有绘制线段,也没有给出错误(并且使用替代的注释行没有做任何不同的事情):
tp <- ggplot()
tp <- tp + geom_point(aes(x = f1, y = r), data = ltd)
#tp <- tp + stat_summary(fun.data = "seXy", color = "red", geom = "linerange")
tp <- tp + stat_summary(fun.data = "seXy", color = "red", geom = "linerange",
aes(ymin = ..ymin.., ymax = ..ymax..))
print(tp)
第二种方法需要什么才能linerange
出现?我显然误解了一些东西。当然,这是一个 MWE,真实的上下文更复杂,但如果不理解这个简单的例子,我无法解决这个问题。看起来像是qplot
在后台为我做某事,但我不知道是什么。谢谢。