2016-07-12 15 views
1

このプロットでは、this linkのように複数の分位数を指摘したいと思います。プロット内の分数Rマーク

x <- rnorm(1000,0,1) 

me <- mean(x) 
s <- sd(x) 

y <- 1/sqrt(2*pi)/s*exp(-(x-me)^2/2/s/s) 
sx <- sort(x) 
n <- seq(1, length(sx),1) 
Px <- (3*n-1)/(3*length(sx)+1) 

plot(sx,Px) 
lines(sx, pnorm(sx, mean=me, sd = s), lwd=3, col="red") 

どの機能をお勧めしますか?私は今まで分位点を計算していました。その最も生々しいで

qq<-quantile(x,c(0.5,0.95)) 

答えて

1

あなたは試すことができます:

# data 
set.seed(1221) 
x <- rnorm(1000,0,1) 
# [your code to plot the graph] 
# Quantiles 
P <- c(0.05, .25, 0.5, 0.75, 0.95) # The quantiles you want to calculate 
qq <- quantile(x, P) 
df <- cbind(P, qq) 
# the segments 
apply(df, 1, function(x) segments(x0 = x[2], x1 = x[2], y0 = -10, y1 = x[1], lty = 2, col = 2)) 
apply(df, 1, function(x, y) segments(x0 = y-10, x1 = x[2], y0 = x[1], y1 = x[1], lty = 2, col = 2), min(x)) 

編集

# add the text, not that elegant, but it works: 
sapply(1:length(names(qq)), function(x) text(df[x,2], -0.08, bquote(Q[ ~ .(names(qq)[x])]), xpd = TRUE)) 

enter image description here

+0

素晴らしい見えること! x軸までの参照しかないというコードを編集する方法はありますか?もしそうなら、Quantiles Q(index = 0.5など)の名前を付けることは本当に役に立ちます。大変感謝しています! – Alex

+0

@Alex最終編集を参照してください。答えを受け入れるには、左側のチェックボタンをマークすることを検討してください。 – Jimbou

+0

これは完璧です、ありがとうございます! – Alex

0

、次のことができます。

lines(x=c(qq[1], qq[1]), y=c(-2, 0.5), col="darkgreen", lwd=2, lty="dotted") 
lines(x=c(-5, 0), c(0.5, 0.5), col="darkgreen", lwd=2, lty="dotted") 

カスタムラベルを追加するaxisとの遊びを持っています。