我想要在线图中绘制以下矩阵(定义为现金流)。
[,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
我想为每一行提供颜色。但是,我希望行> = row [6,]具有相同的颜色(例如红色),行[6]和行[3,]之间的行具有相同的颜色(例如蓝色),行= < row [3,]具有相同的颜色(例如绿色)。
我如何将其实现到下面的r代码中?
plot(timeline,casflow[1,], ylim=range(2000000,5000000), type ="l")
for (i in 1:total.simulations){
lines(timeline,cashflow[i,])}
谢谢!
答案 0 :(得分:1)
我没有timeline
向量,但您可以使用matplot
来避免循环:
matplot(t(cashflow), type="l", col=c(rep("green",3),rep("blue",2), rep("red",nrow(cashflow)-6+1)))
修改强>
如果你有nr
个数字的行(nr <- nrows(cashflow)
),你想要10%(假设nr,模拟次数,可以除以10)第一行为绿色和10%的最后一行为红色,其他行为蓝色,您可以这样做:
首先,创建颜色矢量:
vec_col <- c(rep("green", nr*0.1), rep("blue", nr*0.8), rep("red", nr*0.1))
然后绘制线条:
matplot(t(cashflow), type="l", col=vec_col)
答案 1 :(得分:0)
在循环和颜色向量中使用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])}