我想知道如何用一些颜色完全覆盖两条曲线之间的圆柱形区域?现在,我已尝试使用rect()
,但rect()
上方和下方仍有两个微小的空格,我不知道如何覆盖?
此处是我当前的R代码:
curve(dnorm(x), -1.96, 1.96, bty="n", ann=F, axes=F, xaxs="i", yaxs="i")
curve(-dnorm(x), -1.96, 1.96, add=TRUE)
rect(-.5, -dnorm(-.5), .5, dnorm(.5), col="red" ) # How can I fill-up the white space
# above and below the rectangle?
axis(1, at=c(-1.96,0,1.96),mgp=c(2, .6, .45), tcl=F )
此外,这是一张显示顶部空白区域和底部空白区域的图片:
答案 0 :(得分:2)
通过将line=0
添加到axis()
,可以修复底部的行。 (我发现?axis
处的文档暗示默认line=NA
会将该行放在边距副“线条数量中”。
也许我误解了你,但你无法用矩形填充顶部的空白区域。要遵循曲线顶部的曲率,您需要polygon
:
curve(dnorm(x), -1.96, 1.96, bty="n", ann=F, axes=F, xaxs="i", yaxs="i")
curve(-dnorm(x), -1.96, 1.96, add=TRUE)
n <- 50
xs <- seq(-0.5, 0.5, len=n)
polygon(c(xs[1], xs, xs[n]), c(0, dnorm(xs), 0), col='red')
axis(1, at=c(-1.96,0,1.96),mgp=c(2, .6, .45), tcl=F , line = 0)
答案 1 :(得分:0)
使用ggplot
:
library(ggplot2)
ggplot(data.frame(x=seq(-1.96,1.96,0.01)), aes(x)) +
stat_function(fun=dnorm, xlim=c(-1.96, 1.96))+
stat_function(fun=function(x)-dnorm(x), xlim=c(-1.96, 1.96))+
geom_rect(aes(xmin=-.5, xmax=.5,ymin=-dnorm(.5), ymax=dnorm(.5)), fill='red', col='black', alpha=0.5) +
geom_hline(yintercept=0) +
geom_text(data=data.frame(x=c(0.00,-1.96,1.96), y=rep(0,3)), aes(x=x, y=y, label = x), nudge_y = 0.015) +
theme_bw()