R plot()-如何在X值上方/下方更改线条颜色

时间:2019-07-06 16:11:44

标签: r plot colors

我通过线形图表示自变量之间相互作用的“性质”,在该图上,相互作用的性质在计算值w0的上方和下方变化。低于此值,有缓冲效果,高于此值,有放大效果。我想用绿线代表放大效果,用红线代表缓冲效果。

使用线条时,线条不会根据条件改变颜色。但是,当我使用点代替时,这些点会正确更改颜色,但是这些点非常稀疏,因此很难测量结果。

enter image description here

enter image description here

我尝试使用ifelse()函数尝试更改线条的颜色,但是如前所述,它不适用于仅线条的线条。

wLow = 0
w0   = 1.49
wHigh = 4


z = yaxis <- c(1,2,3)
t = xaxis <- c(wLow,w0,wHigh)

distPlot <- plot(t,z, type="b", lwd=5, pch=15, col = ifelse( t < 
w0,'red','green'), xlab="Moderator Range", ylab="Effect")

理想情况下,我希望w0下方的线是红色,上方的线是绿色,或者如果这不可能,我们是否可以在3个给定点之间创建正确颜色的点线?

2 个答案:

答案 0 :(得分:1)

一种解决方案是先绘制segments线,然后添加点。
请注意,必须先开始空白图。这是通过plot(..., type = "n")完成的。

z0  <- c(1, 2)
t0  <- c(wLow, w0)
z1 <- c(2, 3)
t1 <- c(w0, wHigh)

plot(t, z,type = "n", xlim = range(t), ylim = range(z),
    xlab = "Moderator Range", ylab = "Effect")
segments(t0, z0, t1, z1, lwd = 5, col  = ifelse(t < w0, 'red', 'green'))
points(t, z, pch = 15, col  = ifelse(t < w0, 'red', 'green'))

enter image description here

答案 1 :(得分:1)

graphics.off()
plot(t, z, type="n", xlab="Moderator Range", ylab="Effect")
lines(t[t <= w0], z[t <= w0], col = "red", lwd = 5)
lines(t[t >= w0], z[t >= w0], col = "green", lwd = 5)
points(t, z, pch = 19, cex = 2, col = "white")
points(t,z, pch=15, col = ifelse( t < w0,'red','green'))

enter image description here