1
我有一個介於-1和0之間的值矩陣,我想將它們映射到混合紅 - >白 - >藍的顏色。換句話說,紅色是-1,0是白色,藍色是正1.R - 將小數點矩陣映射到顏色
接下來,我想從這些顏色中獲取rgb值作爲三個獨立的矩陣。
我有一個介於-1和0之間的值矩陣,我想將它們映射到混合紅 - >白 - >藍的顏色。換句話說,紅色是-1,0是白色,藍色是正1.R - 將小數點矩陣映射到顏色
接下來,我想從這些顏色中獲取rgb值作爲三個獨立的矩陣。
您可以將您的值-1 to +1
縮放到0 to 1
,然後使用colorRamp
。一個全功能採取矩陣m
並返回r/g/b
值的數組將是:
m <- matrix(seq(-1,1,length.out=9),nrow=3)
# [,1] [,2] [,3]
#[1,] -1.00 -0.25 0.50
#[2,] -0.75 0.00 0.75
#[3,] -0.50 0.25 1.00
colsel <- function(m,cols) {
x <- as.vector(m)
xscal <- scale(x,center=min(x),scale=diff(range(x)))
out <- colorRamp(cols)(xscal)
dim(out) <- c(dim(m),3)
dimnames(out) <- list(NULL,NULL,cols)
out
}
結果:
colsel(m, c("red","white","blue"))
#, , red
#
# [,1] [,2] [,3]
#[1,] 255 255.00 127.50
#[2,] 255 255.00 63.75
#[3,] 255 191.25 0.00
#
#, , white
#
# [,1] [,2] [,3]
#[1,] 0.00 191.25 127.50
#[2,] 63.75 255.00 63.75
#[3,] 127.50 191.25 0.00
#
#, , blue
#
# [,1] [,2] [,3]
#[1,] 0.00 191.25 255
#[2,] 63.75 255.00 255
#[3,] 127.50 255.00 255
謝謝!但我的價值觀在矩陣中。該函數需要一個向量。 – CodeGuy
@CodeGuy - 進一步清理它,希望能給你想要的東西。 – thelatemail
謝謝你搖滾! – CodeGuy