2014-07-25 3 views
0

나는 0과 1의 간단한 테스트 행렬 (단지 3x3 행렬)을 생성했습니다. 내가 생성 한 정확한 행렬은 다음과 같습니다.R 히트 맵 기능 문제 - 잘못된 색 구성표를 생성합니다.

vector <- c(1, 0, 0, 1, 1, 1, 0, 0, 1) 
matrix <- matrix(vector, nrow=3, ncol=3) 
heatmap(matrix, Rowv=NA, Colv=NA) 

생성 된 히트 맵은 흰색, 노란색, 주황색 및 빨간색 블록으로 나옵니다. 0과 1은 어떻게 다른 색상의 블록을 만들 수 있습니까? 빨간색과 흰색이라고 말하면 안 될까요? 아니면 노란색과 흰색? 아니면 그런 식으로?

내가 뭘 잘못하고 있니?

+1

에 설명되어 있습니다 설정 팁, 절대로 변수 'matrix'또는 다른 함수의 이름을 호출하지 마십시오 – wespiserA

답변

1

heatmap의 기본 동작은 행별로 값을 스케일링하는 것입니다 (중심에두고 표준 편차로 나눕니다). 예를 들어, 0과 1을 플로팅하는 것이 아닙니다. 다음은 두 색상을 기대한다면 당신이 정말로

m1 <- sweep(matrix, 1, rowMeans(matrix)) 
msd <- apply(m1, 1, sd) 
m2 <- sweep(m1, 1, msd, `/`) 
m2[,3:1] 

#   [,1]  [,2]  [,3] 
# [1,] -1.1547005 0.5773503 0.5773503 
# [2,] -0.5773503 1.1547005 -0.5773503 
# [3,] 0.5773503 0.5773503 -1.1547005 

음모를 꾸미고있는거야,

heatmap(matrix, Rowv=NA, Colv=NA, scale="none") 

scale="none" 모든 ?heatmap 도움말 페이지 단지

enter image description here

0

이것은 큰 질문이 아닙니다. 게시하기 전에? heatmap을 읽는 것이 좋습니다.

vector <- c(1, 0, 0, 1, 1, 1, 0, 0, 1) 
matrix <- matrix(vector, nrow=3, ncol=3) 
heatmap(matrix, Rowv=NA, Colv=NA, 
     col = c('red', 'blue') 
     ) 

을 당신이 '안부'에 함수를 전달할 수있는 색상보다 효율적으로 관리를 원하는 경우 : 다음은 보여대로 쉽게 히트 맵 기능의 색상을 지정할 수 있습니다.

+0

하지만 사용 가능한 열 단지 2 개의 음영으로 올라간다. 0과 1의 테스트 매트릭스를 사용하고 있지만, 생성하고자하는 히트 맵은 0에서 100 사이의 숫자를 포함합니다. 내 문제는 색상 선택과 관련이 없으며 기본 팔레트가 내 테스트 매트릭스의 숫자와 일치하지 않는 색상을 임의로 배치하는 이유입니다. 0은 노란색과 흰색으로 표시되는 반면 1은 주황색과 빨간색으로 표시됩니다. 내 질문은 그 이유입니다. – user3412393

+0

두 개의 동일한 값이 서로 다른 색을 생성하는 히트 맵은 실제 데이터에서 함수를 실행하기가 불안하기 때문에 지금은 0과 1의 간단한 테스트 행렬을 고수하고 있습니다. . – user3412393