인터랙티브 그래프(Interactive Graph)란?

- 마우스 움직임에 반응하며 실시간으로 형태가 변하는 그래프

 

** 참고

https://plot.ly/ggplot2/ 에 접속하면 plotly 패키지를 이용해 만든 인터랙티브 그래프들 직접 조작 가능

 

plotly

Plotly for ggplot2 is an interactive, browser-based charting library built on Plotly's open source javascript graphing library, plotly.js. It works entirely locally, through the HTML widgets framework.

plot.ly

 

 

■ plotly 패키지로 인터랙티브 그래프 만들기

(1) 패키지 준비하기

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

 

(2) ggplot2로 그래프 만들기

- ggplot2로 만든 그래프를 plotly 패키지의 ggplotly()에 적용하면 인터랙티브 그래프가 생성됨

- 먼저 ggplot()을 이용해 그래프 제작 (mpg 데이터를 이용할 예정)

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

 

(3) 인터랙티브 그래프 만들기

ggplotly(p)

 

(4) HTML로 저장하기

- 뷰어 창에서 [Export > Save as Web Page...]를 클릭하면 인터랙티브 그래프를 HTML 포맷으로 저장 가능

인터랙티브 산점도 그래프.html
4.14MB

 

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

- 산점도 외에도 ggplot2 패키지로 만든 그래프는 ggplotly()를 이용해 인터랙티브 그래프로 제작 가능

- ggplot2 패키지에 내장된 diamonds 데이터(다이아몬드 5만여 개의 캐럿, 컷팅 방식, 가격 등의 속성을 담은 데이터)를 이용해 막대 그래프를 만든 후 ggplotly()에 적용해 인터랙티브 그래프 제작

 

 

 

 

■ dygraphs 패키지로 인터랙티브 시계열 그래프 만들기

- 인터랙티브 시계열 그래프를 이용하면 마우스로 시간 축을 움직이면서 시간에 따라 데이터가 어떻게 변하는지 자세히 살펴볼 수 있음

- ggplot2 패키지에 내장된 economics 데이터를 이용해 그래프 제작 (economics는 실업자 수, 저축률 등 1967~2015년 미국의 월별 경제 지표를 담은 데이터)

 

(1) dygraphs 패키지 설치 및 로드

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

 

(2) economics 데이터 불러오기

economics <- ggplot2::economics
head(economics)

 

(3) 데이터 타입 변경하기

- ★ dygraphs 패키지를 이용해 인터랙티브 시계열 그래프를 만들려면 데이터가 시간 순서 속성을 지니는 xts 데이터 타입으로 되어 있어야 함

- xts()를 이용해 economics 데이터의 unemploy(실업자 수)를 xts 타입으로 변경

(참고: xts 패키지는 R에 내장되어 있으니 별도 설치 필요X)

library(xts)
eco <- xts(economics$unemploy, order.by = economics$date)
head(eco)

 

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

- dygraphs 패키지의 dygraph()를 이용해 인터랙티브 시계열 그래프 제작

dygraph(eco)

선 위에 마우스 커서를 올리면 그래프 우측 상단에 날짜와 실업자 수가 표시됨

 

(5) 날짜 범위 선택 기능

- dygraph()에 %>%를 이용해 dyRangeSelector()를 추가하면 그래프 아래에 날짜 범위 선택 기능이 추가됨

- 버튼을 움직여 특정 기간만 선택 가능하고, 범위를 정한 뒤 좌우로 움직이면 시간에 따른 데이터의 변화를 볼 수 있음

dygraph(eco) %>% dyRangeSelector()

 

 

(6) 여러 값 표현하기

- 인터랙티브 시게열 그래프여러 값을 동시에 표현 가능함 (시간을 중심으로 나머지 데이터들 표현 가능)

- economics 데이터의 unemploy(실업자 수)와 psavert(저축률)를 그래프에 함께 표현 가능

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

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

 

(7)

eco2 <- cbind(eco_a, eco_b)                   # 데이터 결합
colnames(eco2) <- c("psavert", "unemploy")    # 변수명 바꾸기
head(eco2)

 

(8) dygraph()를 이용해 인터랙티브 시계열 그래프 제작

dygraph(eco2) %>% dyRangeSelector()

마우스 커서를 올리면 그래프 우측 상단에 두 변수의 값이 동시에 표시됨

 

 

 

 

** 참고한 자료

- Plotly ggplot2 Library: https://plot.ly/ggplot2/

 

plotly

Plotly for ggplot2 is an interactive, browser-based charting library built on Plotly's open source javascript graphing library, plotly.js. It works entirely locally, through the HTML widgets framework.

plot.ly

- dygraphs for R: http://rstudio.github.io/dygraphs

 

dygraphs for R

The dygraphs package is an R interface to the dygraphs JavaScript charting library. It provides rich facilities for charting time-series data in R, including: Automatically plots xts time series objects (or any object convertible to xts). Highly configurab

rstudio.github.io

 

(출처; 가천대학교 컴퓨터공학과, 이영호 교수님)

(출처; 쉽게 배우는 R 데이터 분석, 김영우)

 

<치트 시트>

- ggplot2에는 색, 크기, 폰트 등 그래프의 세부적인 요소들을 조절할 수 있는 다양한 기능이 있다. 치트시트(Cheat Sheet)라는 패키지 사용법을 요약한 매뉴얼을 참고하면 자주 사용하는 기능들을 한 눈에 볼 수 있다.

- R 스튜디오 메뉴에서 [Help -> Cheatsheets -> Data Visualization with ggplot2] 클릭

https://www.rstudio.com/resources/cheatsheets/

 

RStudio Cheat Sheets

Cheat sheets make it easy to learn about and use some of our favorite packages.

www.rstudio.com

 

 

<ggplot2로 만든 다양한 그래프와 코드들>

- ggplot2를 이용하면 거의 모든 종류의 그래프를 만들 수 있다. (사용자들이 만든 그래프와 코드)

http://www.r-graph-gallery.com/portfolio/ggplot2-package/

 

General Ggplot2 Tips

  Sponsors   Customization with theme() With ggplot2, the appearance of the plot is controlled using the theme function. It allows you to control each of the elements of a graph: axis, ba…

www.r-graph-gallery.com

 

 

<확장 패키지들>

- ggplot2에 새로운 형태의 그래프를 만들 수 있는 함수를 추가한 확장 패키지들이 지속적으로 개발되고 있음.

http://www.ggplot2-exts.org/gallery/

 

http://www.ggplot2-exts.org/gallery/

ggQQunif Star Make QQ plots for big data expected to be uniformly distributed, e.g. p-values. stopauthor: rcorty stoptags: visualization,quantiles,p-values,statistics,big data stopjs libraries: more_vert --> true ggQQunifclose (full meta data to go here) x

www.ggplot2-exts.org

 

 

 

(출처; 가천대학교 컴퓨터공학과, 이영호 교수님)

(출처; 쉽게 배우는 R 데이터 분석, 김영우)

<쉽게 배우는 R 데이터 분석 p.160>

문제 1. popadults 는 해당 지역의 성인 인구, poptotal은 전체 인구를 나타냅니다. midwest 데이터에 '전체 인구 대비 미성년 인구 백분율' 변수를 추가하세요.

total 이라는 새로운 변수 추가

 

문제 2. 미성년 인구 백분율이 가장 높은 상위 5개 country(지역)의 미성년 인구 백분율을 출력하시오.

문제 3. 다음과 같은 분류표의 기준에 따라 미성년 비율 등급 변수를 추가하고, 각 등급에 몇 개의 지역이 있는지 알아보세요.
library(ggplot2)
data <- data %>% mutate(level = ifelse(data$total >= 40, "large",
					ifelse(data$county > 30, "middle", "small")))
table(data$level)
qplot(data$level)

large middle small
   32    396     9

 

문제 4. popasian은 해당 지역의 아시아인 인구를 나타냅니다. '전체 인구 대비 아시아인 인구 백분율' 변수를 추가하고 하위 10개 지역의 state(주), county(지역), 아시아인 인구 백분율을 출력하세요.
data <- midwest %>%
	mutate(tot_asian = (popasian/poptotal)*100) %>%
    arrange(tot_asian) %>%
    select(state, county, tot_asian) %>%
    tail(10)
data

 

(출처; 쉽게 배우는 R 데이터 분석, 김영우)

+ Recent posts