12. 인터랙티브 그래프

마우스 움직임에 반응해 실시간으로 형태가 변하는 인터렉티브 그래프를 만드는 방법을 알아봅시다.

인터렉티브 그래프란, 마우스 움직임에 반응하여 실시간으로 형태가 변하는 그래프를 말합니다. 인터렉티브 그래프를 만들면 그래프를 자유롭게 조작하면서 관심 있는 부분을 자세히 살펴볼 수 있습니다. 그래프를 HTML 포맷으로 저장하면, 일반 사용자들도 웹 브라우저를 이용해 그래프를 조작할 수 있습니다.

NP

12-1. plotly 패키지로 인터랙티브 그래프 만들기

인터랙티브 그래프 만들기

패키지 준비하기

install.packages("plotly")
library(plotly)
NP

ggplot으로 그래프 만들기

library(ggplot2)
p <- ggplot(data = mpg, aes(x = displ, y = hwy, col = drv)) + geom_point()
print(p)
NP

인터랙티브 그래프 만들기

ggplotly(p)

마우스를 드래그하면 특정 영역을 확대할 수 있습니다. 그래프 위에서 더블클릭하면 다시 원래대로 되돌아옵니다.

NP

HTML로 저장하기

뷰어 창에서 [Export -> Save as Web Page…]를 클릭하면 인터렉티브 그래프를 HTML 포맷으로 저장할 수 있습니다. HTML 파일은 웹 브라우저에서 열어볼 수 있기 때문에 R을 사용하지 않는 사용자들도 그래프를 볼 수 있습니다.

NP

인터랙티브 막대 그래프 만들기

p <- ggplot(data = diamonds, aes(x = cut, fill = clarity)) + 
  geom_bar(position = "dodge")

ggplotly(p)

NP

12-2. dygraphs 패키지로 인터랙티브 시계열 그래프 만들기

인터랙티브 시계열 그래프 만들기

패키지 준비하기

install.packages("dygraphs")
library(dygraphs)
NP

데이터 준비하기

economics <- ggplot2::economics
head(economics)
## # A tibble: 6 × 6
##   date         pce    pop psavert uempmed unemploy
##   <date>     <dbl>  <dbl>   <dbl>   <dbl>    <dbl>
## 1 1967-07-01  507. 198712    12.6     4.5     2944
## 2 1967-08-01  510. 198911    12.6     4.7     2945
## 3 1967-09-01  516. 199113    11.9     4.6     2958
## 4 1967-10-01  512. 199311    12.9     4.9     3143
## 5 1967-11-01  517. 199498    12.8     4.7     3066
## 6 1967-12-01  525. 199657    11.8     4.8     3018
NP

시간 순서 속성을 지니는 xts 데이터 타입으로 변경

library(xts)

eco <- xts(economics$unemploy, order.by = economics$date)
head(eco)
##            [,1]
## 1967-07-01 2944
## 1967-08-01 2945
## 1967-09-01 2958
## 1967-10-01 3143
## 1967-11-01 3066
## 1967-12-01 3018
NP

인터랙티브 시계열 그래프 만들기

# 그래프 생성
dygraph(eco)

NP

날짜 범위 선택 기능

dygraph(eco) %>% dyRangeSelector()

NP

여러 값 표현하기

# 저축률 
eco_a <- xts(economics$psavert, order.by = economics$date)

# 실업자 수
eco_b <- xts(economics$unemploy/1000, order.by = economics$date)

합치기

eco2 <- cbind(eco_a, eco_b)                 # 데이터 결합
colnames(eco2) <- c("psavert", "unemploy")  # 변수명 바꾸기
head(eco2)
##            psavert unemploy
## 1967-07-01    12.6    2.944
## 1967-08-01    12.6    2.945
## 1967-09-01    11.9    2.958
## 1967-10-01    12.9    3.143
## 1967-11-01    12.8    3.066
## 1967-12-01    11.8    3.018
NP

그래프 만들기

dygraph(eco2) %>% dyRangeSelector()