在单个图中绘制 nls 与重叠预测区间相符

plotting nls fits with overlapping prediction intervals in a single figure

假设我有一些数据,d,我将 nls 模型拟合到数据的两个子集。

x<- seq(0,4,0.1)
y1<- (x*2 / (0.2 + x))
y1<- y1+rnorm(length(y1),0,0.2)
y2<- (x*3 / (0.2 + x))
y2<- y2+rnorm(length(y2),0,0.4)
d<-data.frame(x,y1,y2)

m.y1<-nls(y1~v*x/(k+x),start=list(v=1.9,k=0.19),data=d)
m.y2<-nls(y2~v*x/(k+x),start=list(v=2.9,k=0.19),data=d)

然后我想在数据上绘制拟合模型回归线,并对预测区间进行阴影处理。我可以使用包 investr 来做到这一点,并分别为每个子集获得漂亮的图:

require(investr)
plotFit(m.y1,interval="prediction",ylim=c(0,3.5),pch=19,col.pred='light blue',shade=T)

 plotFit(m.y2,interval="prediction",ylim=c(0,3.5),pch=19,col.pred='pink',shade=T)

但是,如果我将它们放在一起,就会遇到问题。第二个图的阴影覆盖了第一个图的点和阴影:

1:如何确保第一个图上的点最终位于第二个图的阴影之上?

2:如何使阴影预测区间重叠的区域成为新颜色(如紫色,或重叠的两种颜色的任何融合)?

使用 adjustcolor 添加透明度,如下所示:

plotFit(m.y1, interval = "prediction", ylim = c(0,3.5), pch = 19, 
        col.pred = adjustcolor("lightblue", 0.5), shade = TRUE)

par(new = TRUE)
plotFit(m.y2, interval = "prediction", ylim = c(0,3.5), pch = 19, 
       col.pred =  adjustcolor("light pink", 0.5), shade = TRUE)

根据您的需要,您可以使用两个透明度值(此处均设置为 0.5)并可能只使其中一个透明。