给R中的线图赋予颜色

时间:2015-05-06 12:46:51

标签: 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 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,])}

谢谢!

2 个答案:

答案 0 :(得分:1)

我没有timeline向量,但您可以使用matplot来避免循环:

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

enter image description here

修改

如果你有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])}