R 인터랙티브 시각화 가이드, 단 몇 줄의 코드로 시각화를 완벽하게

아마 데이터 시각화가 중요하다는 것은 모두 인정하실거예요.

기본적인 통계 분석을 하다 보면 안보이던 요소가 데이터 시각화를 통해 인사이트를 얻기도 하니까요. 하나의 데이터 분석 영역이라고 할 만큼 중요한 부분입니다.

물론 전통적인 정적인 차트는 유용하지만, 인터랙티브 시각화는 사용자와 데이터 간의 상호작용을 하기 때문에 더 도움이 됩니다.

인터랙티브 데이터 시각화: R을 통한 완벽 가이드

이번 포스팅에서는 여러분과 함께 R 패키지를 사용하여 인터랙티브 시각화를 만드는 방법을 소개하려고 합니다.

인터렉티브 시각화란?

한마디로 내가 시각적 요소에 직접 참여할 수 있도록 하는 기술입니다. 데이터의 그래픽 표현을 사용하여 데이터를 탐색, 조작, 드릴다운하여 또 다른 인사이트를 얻을 수 있도록 함을 의미하죠. 

정적인 시각화와는 달리 클릭, 마우스 오버, 필터링, 확대/축소 등의 사용자 입력이 가능하여 표시된 정보가 동적으로 업데이트됩니다. 이제 아셨죠. 그러면 슬슬 코딩으로 들어가 보시죠. 

 

준비하기

우선 아래 예제는 R 언어로 구현할 수 있습니다. 그리고 인터랙티브 시각화를 시작하기 위해 몇 가지 패키지가 필요합니다. 이것들은 데이터 조작과 시각화를 위해 필요합니다.

# 필요한 패키지 설치
install.packages("tidyverse")
install.packages("DT")
install.packages("ggplot2")
install.packages("dplyr")
install.packages("gapminder")
install.packages("plotly")
install.packages("leaflet")

# 패키지 로드
library(tidyverse)
library(DT)
library(ggplot2)
library(dplyr)
library(gapminder)
library(plotly)
library(leaflet)

 

인터랙티브 테이블

DT 패키지는 인터랙티브 테이블을 만드는 데 유용한데요. 데이터를 정렬, 필터 및 검색할 수 있습니다. 다음은 gapminder 데이터셋을 사용하여 인터랙티브 테이블을 만드는 방법입니다. 참고로 gapmider 데이터셋은 링크에서 다운로드 받을 수 있습니다. 

Gapminder 데이터 무엇일까요?

Gapminder 데이터는 한눈에 세계의 불평등과 발전을 보여주는 자료입니다. 스웨덴의 통계학자 한스 로슬링(Hans Rosling)이 설립한 Gapminder 재단에서 공개한 이 데이터는 국가별 경제 수준, 의료 수준, 인구 등 다양한 사회 지표를 시간의 흐름에 따라 담고 있습니다.

우리는 무엇을 분석할 수 있을까요?

  • 국가별 비교: 전 세계 국가들의 경제 성장과 사회 발전을 비교 분석할 수 있습니다.
  • 시간의 흐름: 역사적 데이터를 통해 시간에 따른 변화를 파악하고 미래를 예측할 수 있습니다.
  • 다양한 지표: GDP, 기대 수명, 인구, 교육 수준 등 다양한 사회 지표를 포함하고 있습니다.
  • 시각화에 최적화: 데이터 시각화를 통해 복잡한 정보를 직관적으로 이해할 수 있도록 구성되어 있습니다.

 

# 필요한 라이브러리 로드
library(DT)

# 인터랙티브 데이터 테이블 생성
datatable(gapminder, 
          options = list(pageLength = 10, 
                         autoWidth = TRUE, 
                         dom = 'Bfrtip', 
                         buttons = c('copy', 'csv', 'excel', 'pdf', 'print'))) %>%
  formatCurrency('gdpPercap', currency = "$") %>%
  formatStyle('lifeExp', 
              backgroundColor = styleInterval(c(50, 70), c('red', 'green', 'blue')))

이 테이블에서는 컬럼 헤더를 클릭하여 데이터를 정렬하거나, 검색 상자를 통해 특정 국가나 값을 빠르게 찾을 수 있습니다.

 

인터랙티브 차트

Plotly는 인터랙티브 플롯을 만드는 데 필요한 패키지입니다. 이를 이용하여 정적 ggplot2 차트를 인터랙티브 차트로 변환하는 것도 가능합니다. 다음은 gapminder 데이터셋을 사용한 ‘인터랙티브 산점도’입니다. 

# 인터랙티브 산점도 생성
plot_ly(data = gapminder, 
        x = ~gdpPercap, 
        y = ~lifeExp, 
        color = ~continent, 
        text = ~paste(country, "", "GDP per Capita:", gdpPercap), 
        type = 'scatter',    
        mode = 'markers') %>% 
  layout(title = "GDP per Capita vs Life Expectancy",
         xaxis = list(title = "GDP per Capita (Log Scale)", type = "log"),  
         yaxis = list(title = "Life Expectancy"))

이 플롯에서는 포인트 위에 마우스를 올리면 각 국가에 대한 추가 정보를 볼 수 있습니다. 또한, 아래 코드를 이용해 바 차트도 쉽게 만들 수 있습니다:

# 각 대륙별 평균 기대 수명 계산
avg_lifeExp <- gapminder %>%
  group_by(continent) %>%
  summarise(avg_lifeExp = mean(lifeExp, na.rm = TRUE))

# 인터랙티브 바 차트 생성
plot_ly(data = avg_lifeExp, 
        x = ~continent, 
        y = ~avg_lifeExp, 
        type = 'bar', 
        marker = list(color = 'orange')) %>%  
  layout(title = "Average Life Expectancy by Continent",
         xaxis = list(title = "Continent"),
         yaxis = list(title = "Average Life Expectancy"),
         showlegend = FALSE)

이 바 차트에서는 각 막대 위에 마우스를 올리면 대륙별로 평균 기대 수명을 확인할 수 있습니다.

인터랙티브 지도

Leaflet 패키지를 사용하면 지리적 데이터를 표시하는 인터랙티브 지도(map)을 만들 수 있습니다. 다음은 특정 국가의 인구를 표시하는 인터랙티브 맵입니다.

# 국가 좌표를 가진 데이터셋 생성
country_coords <- gapminder %>%
  filter(year == 2007) %>%
  left_join(map_data("world"), by = c("country" = "region"))

# 인터랙티브 맵 생성
leaflet(country_coords) %>%
  addTiles() %>%
  setView(lng = 0, lat = 20, zoom = 2) %>%
  addCircleMarkers(lng = ~long, lat = ~lat, radius = ~sqrt(pop / 1000000), 
                   color = "blue", stroke = FALSE, fillOpacity = 0.5, 
                   popup = ~paste("<b>", country, "</b><br>Population: ", format(pop, big.mark = ","))) %>%
  addLegend("bottomright", pal = colorNumeric("Blues", NULL), 
            values = ~pop, title = "Population", 
            labFormat = labelFormat(big.mark = ","), opacity = 1)

이 맵에서는 마커를 클릭하면 국가명과 인구가 표시되는 팝업이 나타납니다.

 

결론

R을 이용해 인터랙티브 시각화를 해 보았는데요. 기존 정적 시각화 보다 데이터 분석을 다양하게 할 수 있다는 생각 드시나요? 

Plotly, DT, Leaflet과 같은 패키지를 활용하면, 데이터 탐색과 인사이트 도출이 훨씬 수월해집니다. 여러분도 이 기술들을 활용하여 데이터 시각화를 업그레이드 해 보세요. 

Leave a Comment