繁体   English   中英

在 R 中着色 plot 的 3 个区域

[英]Coloring 3 regions of a plot in R

我有一个 plot ,其中有两条曲线(下图)。

我想知道是否有办法将顶线上方涂成红色,两条线之间涂成黄色,底线下方涂成绿色

我想要的 plot 以及我的可重现代码如下。

f <- function(x,peak_x=10,peak_y=11,coef=.004) coef*-(x-peak_x)^2+peak_y
a <- curve(f,0,65,ylim=c(0,11))
b <- curve(f(x, peak_y = 6,coef = .003),0,65, col=3,add=TRUE)

在此处输入图像描述

可能有几种方法,但polygon很好:

plot(NA, xlim=c(0,65), ylim=c(0,11))
pusr <- par("usr")

f <- function(x,peak_x=10,peak_y=11,coef=.004) coef*-(x-peak_x)^2+peak_y
x <- seq(pusr[1], 100, length.out=50)

rect(pusr[1], pusr[3], pusr[2], pusr[4], col="blue")
polygon(c(x, pusr[1]), f(c(x, pusr[2]), peak_x=10, peak_y=11, coef=0.003), col="green")
polygon(c(x, pusr[1]), f(c(x, pusr[2]), peak_x=10, peak_y=6,  coef=0.004), col="red")

box()

在此处输入图像描述

可以使用以下方法获得正确答案:

a <- curve(f,-3,65,ylim=c(0,12),xaxs="i",yaxs="i")
pusr <- par("usr")
rect(pusr[1], pusr[3], pusr[2], pusr[4], col=2,border = 1)
b <- curve(f(x, peak_y = 6,coef = .003),-3,65,add=TRUE,col=2)


polygon(c(-3,a$x,63),c(0,a$y,f(63)),col="yellow")
polygon(c(-3,b$x,54),c(-3,b$y,f(55, peak_y = 6,coef = .003)),col=3)
box()

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM