데이터 시각화

인터랙티브 그래픽 문법

Author

데이터 과학자 이광춘

Published

October 4, 2022

인터랙티브 그래픽 문법

인터랙티브 그래픽 문법은 기존 그래프 문법(Grammar of Graphics)에 다음 문법이 추가된다.

  • linking()
  • hover()
  • selection()
  • active()
  • zoom()
  • interactivity()

ggplot 확장 도구

loon은 우리나라말로 오리로 TCL 언어에 기반한 loon 에 기반을 두고 있으며 이를 ggplot에 확장한 것이 loon.ggplot 이다. loon.ggplot 을 통해 두가지 세상(verse)을 연결할 수 있다.

loon.ggplot 설치에 앞서 의존성을 diveR을 설치한다. diveRtidyverse처럼 인터랙티브 그래픽에 필요한 관련 패키지를 모두 설치해준다. 참고로 diveR 세상은 다음 패키지로 구성된다.

Code
install.packages("diveR")
install.packages("loon.ggplot")

헬로월드

먼저, 산점도와 막대그래프를 ggplot으로 정적 그래프를 제작한다.

Code
library(ggplot2)

p <- ggplot(mtcars, aes(wt, mpg, colour = as.factor(cyl))) + 
  geom_point()
p
h <- ggplot(mtcars, aes(x = hp, fill = as.factor(cyl))) + geom_histogram()
h

ggplot 객체를 ggplot2loon() 함수에 던지게 되면 오리(loon) 객체로 변환되어 인터랙티브 시각화가 가능하게 된다.

Code
library(loon.ggplot)

pl <- ggplot2loon(p)
hl <- ggplot2loon(h)

ggplot() 함수를 l_ggplot()함수로 대체하여 ggplot 문법에 맞춰 시각화를 하게 되면 인터랙티브 그래픽을 제작할 수 있게 된다.

Code
# the scatter plot
l_ggplot(mtcars, aes(wt, 
                     mpg, 
                     colour = as.factor(cyl))) + 
  geom_point()
[1] ".l2.ggplot.plot"
attr(,"class")
[1] "l_plot" "loon"  
Code
# the histogram
l_ggplot(mtcars, aes(x = hp, fill = as.factor(cyl))) + 
  geom_histogram()
[1] ".l3.ggplot.hist"
attr(,"class")
[1] "l_hist" "loon"  

한걸음 더 들어가기

심화학습

Shiny 앱

ggplot을 인터랙티브 그래픽을 위해 loon.shiny()로 심화분석을 갈 수 있다.

Code
library(dplyr)
gp <- gapminder %>% 
  filter(year == 2007,
         continent != "Oceania") %>%
  ggplot(mapping = aes(gdpPercap, lifeExp, 
                       colour = continent)) + 
  geom_point(mapping = aes(size = pop)) + 
  geom_smooth(mapping = aes(weight = pop),
              method = "lm",
              se = FALSE)

library(loon.shiny)
gp %>% 
  loon.ggplot() %>% 
  loon.shiny()