我想使用R绘制具有相同x值(例如日期)的两个数据系列。我希望同一个图形上的两条线,但是一条线大于另一条线的区段应该是另一种颜色。举个例子:
x<-c(-5:5)
y1<-x^2-x-10
y2<-(x^3)-(x^2)-(10*x)+2
plot(x,y1,col="blue", ylim=c(-100,100), type="l")
par(new=T)
plot(x,y2,col="green", ylim=c(-100,100), type="l")
y2大于y1的部分为红色。因此,绿线或多或少是红色,其中-3 < x&lt; 1,然后当x> 1时再次3(我试图发布这个数字,但我的声誉不够高)。我想开发一些代码,允许我对任何数据集执行此操作,例如在矩阵中,例如:
xy<-as.matrix(cbind(x,y1,y2))
我怀疑可以使用for
和if
循环完成,但我更喜欢更优雅的解决方案。如果我可以这样做:Show the intersection of two curves,那就太棒了!
非常感谢您的帮助!
答案 0 :(得分:2)
这是一个非常基本的解决方案,通过创建一些新变量,NA
值来抑制不需要的区域中的绘图:
y2high <- y2
y2high[y2high < y1] <- NA
y2low <- y2
y2low[y2low > y1] <- NA
plot(x,y1,type='l', col='blue')
lines(x,y2high,col='red')
lines(x,y2low,col='green')