[R] 인터렉티브 그래프

이현지·2024년 8월 26일

R/머신러닝/딥러닝

목록 보기
12/16

인터렉티브 그래프 - 움직이는 그래프

패키지 준비

install.packages('plotly')

library(plotly)

1. ggplot으로 그래프 생성

library(ggplot2)

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

mpg 데이터셋을 사용하여 displ(엔진 배기량)과 hwy(고속도로 연비) 간의 관계를
구동 방식(drv)별로 색상을 구분하여 산점도로 시각화한다.

p

p에 ggplot 객체를 저장한다.

ggplotly(p)

gggplot 객체 p를 인터렉티브 그래프로 변환한다.
그래프의 요소에 마우스를 올리면 세부 정보를 확인할 수 있다.

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

diamonds 데이터셋을 사용하여
cut(다이아몬드의 컷)별로 clarity(투명도)에 따라 색상을 구분한 막대 그래프를 생성한다.

position = 'dodge'는 막대를 나란히 배치한다.

ggplotly(p)

이 그래프를 인터렉티브하게 변환한다.

2. 인터렉티브 시계열

install.packages('dygraphs')

시계열 데이터를 인터렉티브하게 시각화하는 데 사용된다.

library(dygraphs)

dygraphs 패키지를 로드한다.

economics

# A tibble: 574 × 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
 7 1968-01-01  531. 199808    11.7     5.1     2878
 8 1968-02-01  534. 199920    12.3     4.5     3001
 9 1968-03-01  544. 200056    11.7     4.1     2877
10 1968-04-01  544  200208    12.3     4.6     2709
# ℹ 564 more rows
# ℹ Use `print(n = ...)` to see more rows

3. 시간 순서 속성을 지니는 xts 타입으로 변경

library(xts)

xts 패키지는 시계열 데이터를 다루기 위한 기능을 제공한다.

eco <- xts(economicsunemploy,order.by=economicsunemploy, order.by = economicsdate)

economics 데이터셋에서 unemploy(실업자 수) 변수를 가져와
날짜(date) 순서에 따라 xts 객체로 변환한다.

head(eco)

변환된 xts 객체의 첫 6행을 확인한다.

           [,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

4. 인터렉티브 시계열 그래프 생성

dygraph(eco)

dygraphs 패키지를 사용하여 eco 객체를 인터렉티브 시계열 그래프로 시각화한다.

생성된 그래프는 마우스 드래그로
특정 기간을 확대하거나 축소할 수 있고,특정 시점의 데이터를 확인할 수 있다.

profile
관심분야: 추천시스템, 자연어처리, 머신러닝, 딥러닝

0개의 댓글