2015년 8월 25일 화요일

[하루에 한 R] heatmap.2 그림을 조정해 보자

오늘은 하루에 '한 R'이 아니고 '두 R'이 되었다. gplots 패키지를 이용하여 그린 heatmap.2 플롯이 맘에 들지 않으니 손을 좀 대 보자. 어떤 문제가 있는가?
이것은 다음의 스크립트로 그려진 것이다.
> heatmap.2(as.matrix(data.final), col=greenred(10), trace="none")
우선 너무 작아서 있으나 없으나 소용이 없는 probe ID를 나타나지 않게 하자.
> heatmap.2(as.matrix(data.final), col=greenred(10), trace="none", labRow=NA)
Row의 label을 없애버린 것이다. 다음으로는 cexCol 파라미터를 줄여서 컬럼 라벨이 잘리지 않게 만들어 보자.
> heatmap.2(as.matrix(data.final), col=greenred(10), trace="none", labRow=NA, cexCol=0.7)
이상으로도 그렇게 나쁘지는 않다. 그러나 글자 크기를 줄임으로 인하여 가독성이 나빠졌다. 글씨 크기를 그대로 유지하려면 마진을 키우면 된다. 대신 정사각형으로 예쁘던 heatmap이 직사각형이 될 것이다. heatmap.2() 함수 안에서 사용하는 margins는 column/row의 라벨을 나타내는 공간에 관한 것이다. R의 plot area와 주변부의 여유 공간을 뜻하는 margin과는 다르다(참고 R graphics 생기초 링크)
> heatmap.2(as.matrix(data.final), col=greenred(10), trace="none", labRow=NA, margins=c(7,5))
컬럼 라벨(샘플명)의 크기는 그대로 유지되면서 마진이 늘어나는 바람에 글씨가 잘리지 않고 전부 보인다. heatmap이 직사각형으로 찌그러진 것이 보기 싫으면 margins=c(7.7)로 해 보라. heatmap 오른편의 마진이 늘어나면서 heatmap의 가로 사이즈가 줄고 이에 따라서 자연스럽게 정사각형으로 되돌아온다. 이것은 그림을 따로 첨부하지는 않겠다.

마지막으로 Color Key and Histogram이라는 글이 바로 아래의 color key와 살짝 겹치는 문제를 해결해 보자. keysize(기본 수치는 1.5)를 약간 줄여도 제목 텍스트와의 간격은 벌어지지 않는다. 결국 문제는 무엇인가 하면 Color Key and Histogram이라는 텍스트가 두 줄이 된 것이다. 이를 바로잡자고 해서 Key의 폭을 늘이면 heatmap의 폭이 줄어들 것이다. 만약 histogram을 표시할 필요가 없다면 heatmap.2(x,...density.info="none")이라고 하면 된다. 그러면 Color Key라고만 표시가 되어 한결 간결해진다.

좀 더 심화된 코스를 원하는가? 키, 덴드로그램, 힛맵의 레이아웃을 아예 바꾸는 방법도 있다. 이를 알아보려면 이 링크를 상세히 읽어보고 layout() 함수와 lmat 매트릭스 및 lwid, lhei 벡터를 이해해야 한다. 예전에는 종이에 그림을 그려가면서 열심히 공부했었는데 다 잊어버렸다! 오늘은 여기까지만 하자.

기타 heatmap으로 그려지는 플롯의 상세한 설정이 나와있는 설명은 다음 사이트를 참조하기 바란다.


댓글 없음: