Skip to content

R (프로그래밍 언어) Heatmap #
Find similar titles

Structured data

Category
Software

개요 #

Heatmap은 다차원(multidimensional)의 정량적(quantitative) 혹은 정성적(qualitative) 데이터 표현 방식의 하나이다. 성분 값의 높낮이 혹은 활성 정도를 색의 채도 변화를 이용하여 표현한다. 열화상 이미지와 같이 주로 값이 크거나 활성화된 경우 빨간색으로 주로 표기하여 Heatmap이라 명명되었다. 1873년 Loua에 파리시의 통계 자료 표현법으로 사용되었다고 하며 큰 값을 가질수록 색이 진해지고 반대의 경우 옅어지게 표현했다. (그림 1)

Image

그림 1. 1873년 Loua에 파리시의 인구통계에 대한 Heatmap. (출처 : The History of the Cluster Heat Map (2008))

유전체 연구에 있어 유전체, 전사체와 같이 특정범주에 대해 다중요소와 개개의 값이 부여된 오믹스 데이터를 표현하는 데 널리 사용되고 있다. 주로 유전자 발현 값이 개체 혹은 특정 군(group)에서 집단(population)의 평균보다 높은 경우 빨간색으로, 반대로 낮은 경우는 녹색이나 파란색으로 표기한다. (그림 2)

Image

그림 2. 유전자 발현 Heatmap.(출처 : 위키피디아)

Heatmap은 데이터의 분포를 색을 이용하여 나타내어 데이터의 분포와 그 관계에 대한 정보를 이해하기 쉽게 제공한다.

Heatmap은 요소와 요소, 개체와 개체의 관계를 거리(distance)를 바탕으로 Hierarchical cluster을 덴드로그램 형태로 표현함으로써 개체 및 성분 간 군집화(clustering) 양상도 함께 보여줄 수 있다. 유전체 빅데이터로부터 정보를 획득 방법으로 활용된다. 주성분 분석(PCA)과 같이 차원 축소와는 전체 값을 한눈에 볼 수 있다는 점에서 차이가 있다.

R을 이용한 Heatmap #

R을 이용한 Heatmap package는 여러 가지가 있으나. heatmap.2와 heatmap3, pheatmap 등 다양한 함수가 존재한다. 함수 간 특별한 차이점은 없지만 heatmap.2의 경우 각 cell에 값의 높낮이를 선형그래프로 표현해주는 기능이 있다. 아래 예제는 각각 pheatmap을 이용한 Heatmap 예제이다.

예제 20(유전자)x10(개체)로 구성된 임의 데이터

    > test = matrix(rnorm(200), 20, 10)
    > test[1:10, seq(1, 10, 2)] = test[1:10, seq(1, 10, 2)] + 3
    > test[11:20, seq(2, 10, 2)] = test[11:20, seq(2, 10, 2)] + 2
    > test[15:20, seq(2, 10, 2)] = test[15:20, seq(2, 10, 2)] + 4
    # 20개 유전자, 10개 개체에 대한 발현 데이터 생성

    > colnames(test) = paste("Test", 1:10, sep = "")
    # 개체이름 지정

    > rownames(test) = paste("Gene", 1:20, sep = "")
    # 유전자 이름 지정

    pheatmap(test)
    # 데이터 test에 대한 heatmap

Image

    > pheatmap(test, kmeans_k = 2)
    # K=2의 K means clustering 진행하여 각 클러스터 평균으로 표현 (kmeas_k = 2)
    > pheatmap(test, scale = "row", clustering_distance_rows = "correlation")
    # 유전자 수준의 값 정규화 (scale = `row`)

    > pheatmap(test, color = colorRampPalette(c("navy", "white", "firebrick3"))(50))
    # Heatmap 컬러 스케일의 색 지정 (color = c(low, mid, high color))

    > pheatmap(test, cluster_row = FALSE)
    # 유전자 클러스터 생성 안 함 (cluster_row = FALSE)

    > pheatmap(test, legend = FALSE)
    # 주석 제거 (legend = FALSE)

    > pheatmap(test, display_numbers = TRUE)
    # 각 셀에 해당하는 값을 수치로 표현 (display_numbers = TRUE)

    > pheatmap(test, cellwidth = 15, cellheight = 12, main = "Example heatmap")
    # Heatmap 제목 작성(main = ``)

주의할 점 #

데이터의 Visualization 측면에서 매우 유용하게 사용되나 위와 같은 데이터는 각 범주 간 Normalization 되지 않은 값을 사용하여 나머지 값들의 분포를 확인할 수 없는 경향을 확인할 수 있다. 이렇듯 데이터를 명확하게 표현하는 것도 중요하지만 사용될 데이터의 의미를 잘 파악하고 사용하여야 한다. 색의 최소, 최댓값이 정해져 있으므로 0~무한대까지의 값을 갖는 경우 정규화(Z-transformation)하여야 정보전달에 쉽다.

참조 #

  • The History of the Cluster Heat Map. Leland Wilkinson & Michael Friendly 2008.
  • Package pheatmap. R package

Suggested Pages #

0.0.1_20140628_0