2014-05-23 4 views
1

히트 맵으로 플롯하려고하는 행렬이 있습니다. ggplot2 패키지에서 heatmap.2() 함수를 사용하고 있습니다.여러 히트 맵에 대한 히트 맵 색 스케일링

나는 그것으로 꽤 많은 시간 동안 노력 해왔다, 나는 아주 간단한 수정이 있는지,하지만 내 문제는 이것이다 :

어떻게 색상은 히트 맵 사이의 일관성을 유지합니까? 예를 들어 색상을 제공하는 값을 상대적으로 반대로 지정합니다.

나는이 질문에 비슷한 일을 시도

:

R/ggplot: Reuse color key for multiple heat maps

하지만이 ggplot 기능을 알아낼 수 없습니다; 나는 "플롯에 레이어가 없다"는 오류 메시지를 계속 받았습니다.

위의 질문에 대한 의견을 읽은 후 scales::rescale()discrete_scale()을 사용해 보았지만 전자는 문제를 제거하지 않지만 후자는 작동하지 않습니다.

나는 아주 간단한 잘못을하고있을뿐 아니라 단지 바보 같은 사람이라는 것을 충분히 알고 있습니다.하지만 내 인생에서 나는 어디로 잘못 가고 있는지 알 수 없습니다.

데이터 자체에 관해서는 10 매트릭스/히트 맵을 플롯하려고합니다. 각 10x10 셀 (시간에 따른 변화 표시)과 셀 범위는 1.0에서 1.2 사이의 값입니다.

예를 들어,이 코드는 내가 사용하고있는 코드입니다 (내 10x10 매트릭스를 사용하면됩니다).

Matrix1<-matrix(data=(runif(100,1.0,1.2)),nrow=10,ncol=10) 
heatmap.2(Matrix1, Colv=NA, Rowv=NA, dendrogram="none", 
    trace="none", key=F, cellnote=round(Matrix1,digits=2), 
    notecex=1.6, notecol="black", 
    labRow=seq(10,100,10), labCol=seq(10,100,10), 
    main="Title1", xlab="Xlab1", ylab="Ylab1" 
) 

그러니이 heatmap.2() 기능에 대한 조정 값을 생성하는 방법, 또는 내가 ggplot() 기능을 크게 감상 할 수있다 사용할 수있는 방법을 알아내는 어떤 도움이!

+2

내가 아는 한'ggplot2 ::: heatmap.2'는 ggplot2 패키지에 없습니다. –

+0

@TylerRinker 수정. ** gplots ** 패키지에 있습니다. –

답변

1

heatmap.2ggplot2 기능이 아닙니다. ggplot2 패키지가 모든 플롯 유형과 호환 될 필요는 없습니다. ?heatmap.2 도움말 페이지를 보면 왼쪽 상단에 기능의 출처를 보여줍니다. heatmap.2 {gplots}은 해당 기능이 gplots 패키지에서 제공됨을 의미합니다. 이들은 다른 pacakges 그래서 그들은 그들이 어떻게 작동하는지 다른 규칙이 있습니다.

다른 히트 맵에서 동일한 색상을 얻으려면 명시 적으로 breaks= 매개 변수를 가져오고 싶습니다. 기본적으로 데이터의 관찰 범위를 동일한 청크로 분할합니다. 그러나 각 데이터 세트의 min 및 max가 다를 수 있으므로 이러한 청크의 시작점과 끝점이 다를 수 있습니다. breaks을 지정하면 모두 일치시킬 수 있습니다. 데이터가 1에서 1.2의 범위 때문에, 당신은

mybreaks <- seq(1.0, 1.2, length.out=7) 

를 설정 한 다음 통화에 모두 일치 구성해야

heatmap.2(Matrix1, Colv=NA, Rowv=NA, dendrogram="none", 
    ... 
    breaks=mybreaks, 
    ... 
) 

를 추가 할 수 있습니다.

0

아마도 도움이 될 것입니다. 다음 코드를 사용하면 여러 개의 히트 맵이 목록에 저장되고 나중에 그리드에 표시됩니다. 이렇게하면 각 히트 맵이 별도로 생성되므로 각 히트 맵의 색상을 제어 할 수 있습니다. 그래서이 경우 나는 각 차트의 숫자 범위에 녹색과 빨간색을 사용하기로 결정했습니다.

data(mtcars) 
require(ggplot2) 
require(gridExtra) 


myplotslist2 <- list() 
var = c("mpg", "wt", "drat") 
new = cbind(mtcars, "variable") 
new = cbind(car = rownames(mtcars), new) 
for (i in 1:length(var)){ 
    t= paste("new[[\"variable\"]] = \"", var[[i]],"\"; a = ggplot(new, aes(variable, car)) + geom_tile(aes(fill = ", var[[i]], "),colour = \"white\") + scale_fill_gradient(low = \"red\", high = \"green\") + theme(axis.title.y=element_blank(), axis.text.y=element_blank(),legend.position=\"none\"); myplotslist2[[i]] = a") 
    eval(parse(text=t)) 
} 


grid.arrange(grobs=myplotslist2, ncol=length(var)) 

결과는 다음과 같습니다 Heatmap

도움이 되었기를 바랍니다.

나는 내 blogpost에서 더 설명합니다. https://dwh-businessintelligence.blogspot.nl/2016/05/pca-3d-and-k-means.html