【发布时间】:2014-02-25 19:44:35
【问题描述】:
我有一个数据集,其中包含来自 100 次模拟火车运行的数据,该网络有 4 列火车、6 个车站以及每个车站的每辆火车的到达迟到时间。我的数据如下所示:
MyData <- data.frame(
Simulation = rep(sort(rep(1:100, 6)), 4),
Train_number = sort(rep(c(100, 102, 104, 106), 100*6)),
Stations = rep(c("ST_1", "ST_2", "ST_3", "ST_4", "ST_5", "ST_6"), 100*4),
Arrival_Lateness = c(rep(0, 60), rexp(40, 1), rep(0, 60), rexp(40, 2), rep(0, 60), rexp(40, 3), rep(0, 60), rexp(40, 5))
)
我现在使用自定义分位数为每个火车和车站创建箱线图(感谢 jlhoward):
f <- function(x) {
r <- quantile(x, probs = c(0.05, 0.25, 0.5, 0.75, 0.95))
names(r) <- c("ymin", "lower", "middle", "upper", "ymax")
r
}
ggplot(MyData, aes(factor(Stations), Arrival_Lateness, fill = factor(Train_number))) +
stat_summary(fun.data = f, geom="boxplot", position="dodge")
非常漂亮:
我现在缺少的是异常值。我想在每个箱线图的汤姆上绘制每个火车/车站组合的前 5% 的观察值。我尝试的是这个(灵感来自this question):
q <- function(x) {
subset(x, quantile(x, 0.95) < x)
}
ggplot(MyData, aes(factor(Stations), Arrival_Lateness, fill = factor(Train_number))) +
stat_summary(fun.data = f, geom="boxplot", position="dodge") +
stat_summary(fun.y = q, geom="point", position="dodge")
我收到一条消息:“ymax 未定义:使用 y 调整位置”,我的图表如下所示:
这显然不是我想要的。
【问题讨论】: