R로 treemap 시각화하기: GNI 2014 데이터셋을 활용한 국가별 국민총소득(GNI) 비교

데이터 시각화를 통해 복잡한 데이터를 한눈에 파악할 수 있습니다. 특히, treemap은 많은 데이터 포인트를 시각적으로 표현하는 데 매우 유용합니다. 이번 포스트에서는 R 프로그래밍 언어를 사용하여 GNI 2014 데이터셋을 기반으로 한 국가별 국민총소득(GNI)을 비교하는 트리맵을 생성하는 방법을 알아보겠습니다.

treemap의 개념

트리맵은 계층적 데이터를 직사각형 모양의 타일로 표현하는 시각화 방법입니다. 각 타일의 크기는 해당 항목의 값에 비례하며, 색상은 추가 정보를 나타낼 수 있습니다. 트리맵은 특히 데이터 포인트가 많고 각 항목의 상대적 크기를 쉽게 비교할 수 있을 때 유용합니다.

R 코드 예제

GNI 2014 데이터셋을 이용한 트리맵을 생성하기 위해 필요한 패키지를 설치하고 불러옵니다.

# 필요한 패키지 리스트
packages <- c("ggplot2", "treemapify", "dplyr", "viridis")

# 설치되지 않은 패키지 확인 및 설치
new_packages <- packages[!(packages %in% installed.packages()[,"Package"])]
if(length(new_packages)) install.packages(new_packages)

# 패키지 로드
lapply(packages, library, character.only = TRUE)

GNI 2014 데이터셋을 불러오고, 데이터 전처리를 수행합니다.

# GNI2014 데이터셋 불러오기
data(GNI2014)

# 데이터 전처리
GNI2014 <- GNI2014 %>%
mutate(label = ifelse(GNI > quantile(GNI, 0.75), country, ""))

트리맵을 생성하는 코드를 작성합니다.

r코드 복사# 트리맵 생성
ggplot(GNI2014, aes(area = GNI, fill = GNI, label = label, subgroup = continent)) +
geom_treemap() +
geom_treemap_subgroup_border(colour = "white", size = 2) +
geom_treemap_subgroup_text(place = "centre", grow = TRUE, alpha = 0.5, colour = "black", fontface = "bold") +
geom_treemap_text(colour = "white", place = "centre", size = 10, grow = TRUE) +
# 수정된 색상 스케일 적용
scale_fill_gradient(low = "yellow", high = "purple", breaks = c(0, 25000, 50000, 75000, 100000), labels = scales::comma) +
labs(title = "GNI 2014 데이터셋 트리맵",
subtitle = "국가별 국민총소득(GNI) 비교",
caption = "Data: GNI2014") +
theme_minimal() +
theme(legend.position = "bottom",
legend.key.width = unit(2, "cm"), # 범례 키 너비 조정
plot.title = element_text(hjust = 0.5, size = 20, face = "bold"),
plot.subtitle = element_text(hjust = 0.5, size = 16),
plot.caption = element_text(hjust = 1, size = 10))

위 코드는 ggplot2 패키지를 사용하여 트리맵을 생성합니다. aes 함수에서 각 타일의 면적(area)은 GNI 값을 기준으로, 색상(fill)은 GNI 값에 따라 설정됩니다. 또한, 상위 25% GNI 값을 가진 국가의 이름을 표시하도록 전처리합니다. 이 값을 조정하면 보이지 않는 국가의 이름을 표시하도록 할 수 있습니다.

전체 소스코드

# 필요한 패키지 리스트
packages <- c("ggplot2", "treemapify", "dplyr", "viridis")

# 설치되지 않은 패키지 확인 및 설치
new_packages <- packages[!(packages %in% installed.packages()[,"Package"])]
if(length(new_packages)) install.packages(new_packages)

# 패키지 로드
lapply(packages, library, character.only = TRUE)

# GNI2014 데이터셋 불러오기
data(GNI2014)

# 데이터 전처리
GNI2014 <- GNI2014 %>%
    mutate(label = ifelse(GNI > quantile(GNI, 0.75), country, ""))

# 트리맵 생성
ggplot(GNI2014, aes(area = GNI, fill = GNI, label = label, subgroup = continent)) +
    geom_treemap() +
    geom_treemap_subgroup_border(colour = "white", size = 2) +
    geom_treemap_subgroup_text(place = "centre", grow = TRUE, alpha = 0.5, colour = "black", fontface = "bold") +
    geom_treemap_text(colour = "white", place = "centre", size = 10, grow = TRUE) +
    # 수정된 색상 스케일 적용
    scale_fill_gradient(low = "yellow", high = "purple", breaks = c(0, 25000, 50000, 75000, 100000), labels = scales::comma) + 
    labs(title = "GNI 2014 데이터셋 트리맵",
         subtitle = "국가별 국민총소득(GNI) 비교",
         caption = "Data: GNI2014") +
    theme_minimal() +
    theme(legend.position = "bottom",
          legend.key.width = unit(2, "cm"),  # 범례 키 너비 조정
          plot.title = element_text(hjust = 0.5, size = 20, face = "bold"),
          plot.subtitle = element_text(hjust = 0.5, size = 16),
          plot.caption = element_text(hjust = 1, size = 10))

흔히 발생하는 실수와 예방법

트리맵을 만들 때 흔히 발생하는 실수는 타일이 너무 작아서 레이블이 잘 보이지 않는 것입니다. 이를 피하기 위해서는 적절한 데이터 전처리와 레이블링 전략을 사용해야 합니다. 또한, 색상을 과도하게 사용하면 시각적으로 복잡해질 수 있으므로 주의가 필요합니다.

정리하기

위 순서에 따라서 소스코드를 실행하면 아래와 같은 결과물이 생성됩니다. 여기에서 생성했던 것과는 조금 더 멋지게 만들어졌죠?

treemap

이번 포스트에서는 R을 사용하여 GNI 2014 데이터셋을 시각화하는 트리맵을 만드는 방법을 살펴보았습니다. 트리맵은 많은 데이터를 직관적으로 비교할 수 있는 강력한 도구입니다. 앞으로도 다양한 시각화 기법을 탐구해보세요!

유사한 게시물