2014-05-14 2 views
1

저는 -1과 0 사이의 값을 갖는 행렬을 가지고 있습니다. 그리고 이것을 빨강 -> 흰색 -> 파랑의 색으로 매핑하고 싶습니다. 즉, 빨강 -1, 0은 흰색, 파랑은 1입니다.R - 십진수의 행렬을 색상으로 매핑하십시오.

다음은이 색상의 rgb 값을 3 개의 분리 된 행렬로 잡고 싶습니다.

답변

5

-1 to +10 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 
+0

감사합니다 그러나 나의 가치관은 매트릭스에있다. 이 함수는 벡터를 취합니다. – CodeGuy

+0

@ CodeGuy - 원하는 것을 제공하기 위해 조금 더 정리했습니다. – thelatemail

+0

감사합니다. – CodeGuy