为R中的线图提供颜色

为R中的线图提供颜色,r,matrix,plot,colors,R,Matrix,Plot,Colors,我有下面的矩阵(定义为现金流),我想用直线图绘制 [,1] [,2] [,3] [,4] [,5] [1,] 2498237 3018931.0 3351470 3369931 3361170 [2,] 2498237 2996003.7 3238663 3330045 3355259 [3,] 2498237 2984259.1 3055009 3290842 3280611 [4,] 2498237 2951007.4 30

我有下面的矩阵(定义为现金流),我想用直线图绘制

     [,1]       [,2]    [,3]    [,4]    [,5]   
 [1,] 2498237  3018931.0 3351470 3369931 3361170 
 [2,] 2498237  2996003.7 3238663 3330045 3355259 
 [3,] 2498237  2984259.1 3055009 3290842 3280611 
 [4,] 2498237  2951007.4 3034455 3272052 3271609 
 [5,] 2498237  2854107.7 2927473 3180767 3264394 
 [6,] 2498237  2831014.7 2898604 3066758 3229430 
 [7,] 2498237  2817957.7 2897599 3028093 3171877 
 [8,] 2498237  2802613.5 2897572 2988316 3065650 
 [9,] 2498237  2761771.7 2885572 2985963 3059341 
[10,] 2498237  2753574.5 2841593 2822220 2877972 
我想给每一行加上颜色。但是,我希望行>=行[6]具有相同的颜色(例如红色),行[6]和行[3]之间的行具有相同的颜色(例如蓝色),行=<行[3]具有相同的颜色(例如绿色)

我如何在下面的r代码中实现这一点

plot(timeline,casflow[1,], ylim=range(2000000,5000000), type ="l")
for (i in 1:total.simulations){
lines(timeline,cashflow[i,])}

谢谢

我没有你的
时间线
向量,但以下是你可以做的,使用
matplot
避免循环:

matplot(t(cashflow), type="l", col=c(rep("green",3),rep("blue",2), rep("red",nrow(cashflow)-6+1)))

编辑


如果有
nr
number行(
nr在循环中使用If和颜色向量

plot(timeline,casflow[1,], ylim=range(2000000,5000000), type ="l")
COL <- c("red","blue","green")
for (i in 1:total.simulations){
if(i <= 3) { z <- 3  }
if(i >= 6) { z <- 1  }
if(i > 3 & i < 6 ) { z <- 3  }
lines(timeline,cashflow[i,], col=COL[z])}
plot(时间线,casflow[1,],ylim=range(200000005000000),type=“l”)

COL:行数的逻辑是什么:1,3,6,…谢谢你的回答。假设我有10000行现金流。所有列都被排序,以便每列中最大的数字在第1行。最小的在第10000行。现在我想用一种颜色绘制10%最低的行(NR9000-10000),10%最大的行(nr.1-1000)用一种颜色,其余的用一种颜色。除了你的第一个建议,你还有其他解决方案吗?我想把百分比写进公式中,以便能够更改模拟的数量,并且仍然有一种颜色的顶部10%,一种颜色的底部10%,以及一种颜色的其余部分。只需更改I=9000;I>1000&I<90000次即可谢谢你的回复。假设我有10000行现金流。所有列都进行了排序,以便每列中最大的数字都在第1行。第10000行中最小的数字。现在我想用一种颜色绘制最低10%的行(NR9000-10000),最大10%的行(nr.1-1000)用一种颜色,其余的用一种颜色。你有其他的解决方案吗?然后是你的第一个建议?我想把百分比写进公式中,以便能够更改模拟的数量,并且仍然有一种颜色的顶部10%,一种颜色的底部10%,其余的用一种颜色。–@Andreas,有关解决方案,请参阅我的编辑。如果
nr
不能除以10,然后可以使用
舍入
使
0.1*nr
成为一个整数(0.8*nr也是如此)
matplot(t(cashflow), type="l", col=vec_col)
plot(timeline,casflow[1,], ylim=range(2000000,5000000), type ="l")
COL <- c("red","blue","green")
for (i in 1:total.simulations){
if(i <= 3) { z <- 3  }
if(i >= 6) { z <- 1  }
if(i > 3 & i < 6 ) { z <- 3  }
lines(timeline,cashflow[i,], col=COL[z])}