如何使用窄平行线填充区域

时间:2013-12-08 16:37:31

标签: r lines area curve

我想利用像“多边形”这样的功能来填充曲线下的区域,但我不想使用颜色而是使用窄的平行线(如果倾斜则更好)。

这可能吗?

2 个答案:

答案 0 :(得分:3)

使用densityangle参数可以在polygon()中实现 (即阅读手册)

 x=seq(-7,10,length=200)
 y1=dnorm(x,mean=0,sd=1)
 plot(x,y1,type="l",lwd=2,col="red")
 y2=dnorm(x,mean=3,sd=2)
 lines(x,y2,type="l",lwd=2,col="blue")


 polygon(x,pmin(y1,y2), density = 10, angle = -45)

从(Shaded area under two curves using R

调整 MINOR

enter image description here

答案 1 :(得分:1)

目前尚不清楚狭窄的平行线是什么意思。但是可以用一组以一定角度绘制的线填充多边形,并在线之间具有特定的间隔。 密度参数控制线条之间的间距(以每英寸线数为单位),角度参数控制线条的角度。她举例说明了由2个多边形的交集定义的区域:

plot(NA,xlim=c(0,1),ylim=c(0,1), xaxs="i",yaxs="i") # Empty plot
a <- curve(x^2-0.25, add = TRUE) # First curve
b <- curve(0.5-x^4, add = TRUE) # Second curve
names(a) <- c('xA','yA')
names(b) <- c('xB','yB')
with(as.list(c(b,a)),{
    id <- yB<=yA
    # b<a area
    polygon(x = c(xB[id], rev(xA[id])),
                    y = c(yB[id], rev(yA[id])), 
                    density=10, angle=60, border=NULL)
    # a>b area
    polygon(x = c(xB[!id], rev(xA[!id])),
                    y = c(yB[!id], rev(yA[!id])), 
                    density=10, angle=30, border=NULL)
})

enter image description here