2017-08-05 8 views
0

における分布曲線下の領域を色付けします:どのように私が言うで始まるレッツR

x <- seq(0, 1, 0.01) 
y <- dbeta(x, 2, 5) 
plot(x, y, type = "l") 

は今、私は以下に示すように0.5と4.5との間の領域を着色するとします

enter image description here

どうすればよいですか?

私はあなたがcurveに似ている、ggplot2::stat_functionでこれを行うことができ、次の行

sapply(seq(0.05, 0.35, 0.01), function(x) lines(c(x, x), c(0, dbeta(x, 2, 5)), col = "yellow", lwd = 4)) 

答えて

4

ことによってそれをハッキング:

library(ggplot2) 

ggplot(data.frame(x = 0:1), aes(x)) + 
    stat_function(fun = dbeta, args = c(2, 5), geom = 'area', 
        xlim = c(0.05, 0.35), fill = 'yellow') + 
    stat_function(fun = dbeta, args = c(2, 5)) 

あなたがしたい場合元のアプローチのようにデータを前処理するのではなく、 ggplotがあなたのために補間するならば、もっと普通のgeom_areageom_lineを使って同じプロットを作ることができます。

2

あなたはplotを開始して以来、基本Rソリューションは次のようになります。

x <- seq(0, 1, 0.01) 
y <- dbeta(x, 2, 5) 
plot(x, y, type = "l") 

x2 <- seq(0.05,0.35,0.01) 
y2 <- dbeta(x2, 2, 5) 
x2 = c(0.05,x2,0.35) 
y2 = c(0,y2,0) 
polygon(x2,y2, col="yellow", border=NA) 

Area under curve

+2

あなたは、多角形の後の行をプロットすると、例えば'plot(x、y、type = 'n')'で初期化し、ポリゴンをプロットし、 'カーブ(dbeta(x、2、5)、add = TRUE)'を使うと、線を鮮明に保つことができます。 – alistaire

関連する問題