为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])}