데이터 분석을 하다 보면 숫자로 이루어진 행렬(matrix)을 한눈에 파악할 수 있도록 시각화해야 하는 경우가 자주 있습니다. R에서는 image() 함수를 사용하면 행렬의 각 값을 픽셀(pixel) 단위의 색상으로 변환하여 이미지 형태로 표현할 수 있습니다.
이렇게 생성된 이미지에서 각 픽셀은 행렬의 값에 해당하며, 왼쪽·오른쪽·위·아래 영역의 크기를 조절해 다양한 형태로 나타낼 수 있습니다. 특히 useRaster 인수를 TRUE로 설정하면 래스터 방식으로 렌더링되어 대용량 행렬도 빠르고 부드럽게 출력됩니다.
기본 사용법
먼저 정규분포를 따르는 난수 100개로 10×10 크기의 행렬을 만들고, image() 함수로 픽셀 이미지를 생성해 보겠습니다. par(mar=...) 옵션은 그림 주변의 여백(마진)을 조절하는 데 사용됩니다.
> M <- matrix(rnorm(100, 1.5), nrow = 10)
> par(mar = c(5, 5, 5, 5))
> image(M, useRaster = TRUE, axes = FALSE)
마진 값을 늘리거나 줄이면 이미지 주변의 여백 크기가 달라집니다.
마진을 넉넉하게 설정한 경우
> par(mar = c(10, 10, 10, 10))
> image(M, useRaster = TRUE, axes = FALSE)
마진을 좁게 설정한 경우
> par(mar = c(2, 2, 2, 2))
> image(M, useRaster = TRUE, axes = FALSE)
회색조(그레이스케일)로 표현하기
기본 색상 대신 회색 계열로 픽셀을 표현하고 싶다면 col 인수에 grey() 함수를 활용하면 됩니다. 아래 예제에서는 0부터 1까지의 값을 180단계로 나누어 매우 세밀한 회색조 그라데이션을 만들었습니다.
> image(M, axes = FALSE, col = grey(seq(0, 1, length = 180)))
이처럼 image() 함수와 useRaster, col 등의 인수를 조합하면 행렬 데이터를 히트맵 스타일의 픽셀 이미지로 손쉽게 시각화할 수 있습니다. 이미지 처리, 공간 데이터 분석, 밀도 표현 등 다양한 용도로 활용해 보시기 바랍니다.