SW/R

R : 나무지도-treemap (개념 및 예제)

얇은생각 2019. 2. 22. 12:30
반응형

데이터 시각화의 중요성

숫자, 문자, 표로만 분석한 결과를 제공하면 어떨까요? 이해가 어려울 것입니다. 데이터만을 보고 의미를 이해하기 어렵기 때문입니다. 우리는 보통 시각을 통해 정보 습득하는 것에 능숙합니다. 분석한 결과와 데이터를 그래프로 표현하면 어떨까요? 아래 그림처럼 도구를 활용해 시각화하고 표현한다면 정보 전달이 용이해지고 이해가 빨라질 것입니다. 


트리맵



나무지도(treemap)

나무지도인 아래 그림을 참조하세요. 데이터가 갖는 계층 구조를 타일 모양을 표현한 것을 나무지도라고 합니다. 아래 보느바와 같이, 계층적 속성을 가집니다. 그리고 계층들은 컬러로 표현됩니다. 우선 나무지도를 사용하기 위해서는 패키지를 설치해야 합니다. 패키지 이름은 treemap입니다. 이전에 패키지 설치 방법을 포스팅 했으니 모르시는 분은 참조해주세요. 


트리맵


이번 포스팅에서 사용하는 데이터셋은 GNI2014입니다. 트리나무로 어떤 내용이 담겨있는지 확인해보겠습니다. 우선 이 데이터셋은 나라와 1인당 총 소득과 관련된 데이터입니다. 구체적인 데이터셋의 내용을 확인하는 법은 이전에 포스팅하였으니 참조해주세요.


library(treemap)
data(GNI2014) # 데이터 불러오기
str(GNI2014) # 데이터 내용보기
# 'data.frame': 188 obs. of 5 variables:
# $ iso3 : chr "BMU" "NOR" "QAT" "CHE" ...
# $ country : chr "Bermuda" "Norway" "Qatar" "Switzerland" ...
# $ continent : Factor w/ 8 levels "Africa","Antarctica",..: 5 4 3 4 3 4 6 4 4 5 ...
# $ population: num 67837 4676305 833285 7604467 559846 ...
# $ GNI : int 106140 103630 92200 88120 76270 75990 64540 61610 61310 55200 ...
treemap(GNI2014, # 데이터 입력
index=c("continent","iso3"), # 계층 구조 표현
vSize="population", # 각 모양 크기
vColor="GNI", # 각 모양 컬러
type="value", # 각 모양 색깔 방법
bg.labels="yellow") # 전체 배경색


트리맵

index에는 개체의 단위를 지정합니다. 위처럼 계층적 구조를 갖는 경우 상위 층을 먼저 넣어줍니다. 대륙을 먼저 표현한 뒤 국가를 표현하는 것을 뜻합니다. 위 그래프를 보시고 이해하시기 바랍니다.



# 나라 별 사람들의 전체 소득을 연산해서 GNI.total 열에 저장
GNI2014$GNI.total <- GNI2014$population*GNI2014$GNI
head(GNI2014)
# iso3 country continent population GNI GNI.total
# 3 BMU Bermuda North America 67837 106140 7200219180
# 4 NOR Norway Europe 4676305 103630 484605487150
# 5 QAT Qatar Asia 833285 92200 76828877000
# 6 CHE Switzerland Europe 7604467 88120 670105632040
# 7 MAC Macao SAR, China Asia 559846 76270 42699454420
# 8 LUX Luxembourg Europe 491775 75990 37369982250
# 나라별 사람들의 전체 소득을 지역별로 연산내서 GNI2014.a 에 저장
GNI2014.a <- aggregate(GNI2014[,4:6], by=list(GNI2014$continent),sum)
# 지역별 합계를 지역 전체 사람 수로 나누어 GNI.percap 열에 저장
GNI2014.a$GNI.percap <- GNI2014.a$GNI.total/GNI2014.a$population
treemap(GNI2014.a, # 데이터셋
index=c("Group.1"), # 계층
vSize="population", # 크기
vColor="GNI.percap", # 컬러
type="value", # 컬러링 방법
bg.labels="yellow") # 배경


트리맵


위 예제를 한 줄 한 줄 해석해보세요. aggregate() 함수는 무엇일까요? 즉 배열에 세이브된 값을 기준 열에 의해 집계값를 계산하는 함수입니다. 따라서 위처럼 지역별로 인구를 시각화해서 표현할 수 있습니다.

반응형