我正在使用 ggplot2 在单个图上绘制两个累积分布。使用 中的示例,这很简单?stat_ecdf。我的困难在于通过每个分布的中值添加垂直线。
使用单个发行版即可轻松完成此操作:
df <- data.frame(x = c(rnorm(100, 5, 10), rnorm(200, 0, 10)),
g = as.factor(c(rep(1, 100), rep(2, 200))))
ggplot(df, aes(x)) +
stat_ecdf() +
geom_vline(aes(xintercept = median(x)))
Run Code Online (Sandbox Code Playgroud)
但我无法找到一种简单的方法来为多个分布添加垂直线。我尝试了以下方法但没有成功:
ggplot(df, aes(x, colour = g)) +
stat_ecdf() +
geom_vline(aes(xintercept = median(x), colour = g))
Run Code Online (Sandbox Code Playgroud)
我可以通过分阶段组装图来获得所需的结果:
p <- ggplot(df[df$g == 1, ], aes(x)) +
stat_ecdf() +
geom_vline(aes(xintercept = median(x)))
p +
stat_ecdf(data = df[df$g == 2, ]) +
geom_vline(data = df[df$g == 2, ], aes(xintercept = median(x)))
Run Code Online (Sandbox Code Playgroud)
但这似乎是一种不整洁的方式,而且还让我手动设置不同的线条颜色。
当然有更好的方法吗?
尝试这个:
Run Code Online (Sandbox Code Playgroud)ggplot(df, aes(x, colour = g)) + stat_ecdf() + geom_vline(aes(xintercept = median(x[g==1]), color=g[g==1])) + geom_vline(aes(xintercept = median(x[g==2]), color=g[g==2]))
通过添加第二个geom_vline参数并指定每条线和颜色所引用的组,您可以获得具有相应颜色的两条线。希望有帮助!
| 归档时间: |
|
| 查看次数: |
6182 次 |
| 最近记录: |