在R / GGPLOT2中绘制百分位数指示图

6
我有一个基本的两列数据框 (x = "期间" 和 y = "范围") 的情节。
library (ggplot2)
qplot (Periods, Range, data=twocoltest, color=Periods, size = 3,) + geom_jitter(position=position_jitter(width=0.2))

我想在每个时期下方添加一条水平线,该线下方包含该时期所有观察结果的90%。(它不必是一条水平线,任何每个时期的视觉指示都可以)。非常感谢您的帮助。

1
我从未使用过 ggplot,但这个页面看起来似乎会很有帮助:http://had.co.nz/ggplot2/stat_summary.html。此外,您可以使用 quantile(x,probs=0.9) 来获取90%的分位数。 - thelatemail
1个回答

5

好的,我已经阅读了ggplot帮助文档,下面开始翻译:

# example data 
twocoltest <- data.frame(Periods=rep(1:3,each=3),Range=1:9)

library(ggplot2)
c <- qplot (Periods, Range, data=twocoltest, color=Periods, size = 3,) + geom_jitter(position=position_jitter(width=0.2))
q90 <- function(x) {quantile(x,probs=0.9)}

c + stat_summary(fun.y=q90, colour="red", geom="crossbar", size = 1, ymin=0, ymax=0) 

enter image description here


您还可以尝试添加 geom = "line"aes(group = 1)(并删除 yminymax),这样可能会更容易阅读。 - joran
@joran - 我迷失了。我在什么时候添加 aes(group=1)?目前我只得到了连接90%ile的一条线。 - thelatemail
非常感谢,thelatemail的例子正是我所需要的。 - Gratalis
抱歉,我只是指一条连接第90个百分位数的单线可能看起来更漂亮,仅此而已。 - joran
最后一个问题,我可以成功地添加额外的分位数线,例如 qz <- function(x) {z <- quantile(x,probs=c(0.5, 0.84, 0.97))},但我还没有想出如何给这些分位数线赋予独特的颜色。任何帮助将不胜感激。我认为我在基本层面上受到了挑战 :-( - Gratalis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接