-
[R] plotly 패키지로 인터랙티브 그래프 만들기Data Analysis/R 2022. 12. 29. 13:49반응형
인터랙티브 그래프란?
마우스 움직임에 반응하여 실시간으로 변하는 그래프를 의미합니다.
그래프 결과를 HTML파일로 저장하면, R을 사용하지 않는 일반 사용자들도 그래프를 조작할 수 있습니다.
1. iris 데이터로 인터랙티브 그래프 만들기
패키지 설치
install.packages("plotly") library(plotly)
그래프 만들기
iris 데이터를 이용해서 간단하게 산점도를 그려보겠습니다.
x축은Sepal.Length, y축은 Petal.Width로 설정하고 색상은 Species에 따라 다른 색으로 표현하겠습니다.
*geom_point()는 그래프를 산점도로 나타내고 싶을때 사용하는 함수입니다.
p <- ggplot(data = iris, aes(x = Sepal.Length, y = Petal.Width, col = Species)) + geom_point()
인터랙티브 그래프 만들기
ggplot()으로 그래프를 만들고 {plotly}패키지의 ggplotly를 적용해주면 간편하게 인터랙티브 그래프를 만들 수 있습니다.
ggplotly(p)
HTML로 저장하기
Export > Save as Web Page...
위에서 언급한것 처럼, HTML로 저장해주면 R을 사용하지 않는 사용자도 R에서 처럼 동일하게 조작할 수 있습니다.
[HTML 파일]
iris_scatterplot.html3.70MB2. 코로나 데이터로 인터랙티브 그래프 만들기
코로나 데이터를 활용해서 시간에 따른 확진자, 완치자, 사망자 수의 변화 추이를 알아 볼 수 있는 라인그래프를 만들어 보겠습니다.
데이터 준비 및 패키지 설치
https://dacon.io/competitions/official/235590/data
월간 데이콘 코로나 데이터 시각화 AI 경진대회 - DACON
분석시각화 대회 코드 공유 게시물은 내용 확인 후 좋아요(투표) 가능합니다.
dacon.io
위 사이트에 접속하여 Time 데이터를 다운받아주세요.
# 패키지 불러오기 library(dplyr) library(tidyr) library(ggplot2) library(lubridate) library(plotly) ## 데이터 불러오기 # 작업 폴더 지정 setwd("경로") # 데이터 불러오기 time <- read.csv("Time.csv")
head(time) date time test negative confirmed released deceased 1 2020-01-20 16 1 0 1 0 0 2 2020-01-21 16 1 0 1 0 0 3 2020-01-22 16 4 3 1 0 0 4 2020-01-23 16 22 21 1 0 0 5 2020-01-24 16 27 25 2 0 0 6 2020-01-25 16 27 25 2 0 0
[Time 데이터 설명]
test : 누적 검사자 수
negative : 누적 음성자 수
confirmed : 누적 양성자 수
released : 누적 완치자 수
deceased : 누적 사망자 수데이터 정제
time 데이터에서 필요한 변수인 date, confirmed, released, deceased 만 추출하겠습니다.
gather 함수를 사용해서 해당 날짜의 환자수를 상태별로 집계해보겠습니다.
time <- time %>% select(date, confirmed, released, deceased) # time 데이터에서 변수를 선택하여 저장 time <- time %>% gather(state, number, -date) # date를 제외한 나머지 변수를 number형태로 모아 state변수를 생성 time$date <- as.Date(time$date) # 날짜 형식으로 변환
head(time) date state number 1 2020-01-20 confirmed 1 2 2020-01-21 confirmed 1 3 2020-01-22 confirmed 1 4 2020-01-23 confirmed 1 5 2020-01-24 confirmed 2 6 2020-01-25 confirmed 2
그래프 만들기
date를 x축에 확진자 수를 y축에 두고 state에 따라 색이 다른 라인 그래프를 만들어 보겠습니다.
p <- ggplot(time, (aes(x = date, y = number, color = state))) + # x축은 date, y축은 number, state에 따라 색을 다르게 지정 geom_line(lwd = 2) + # line graph 형태로 표현 , 선굵기 지정 scale_x_date(breaks = "month") + # x축을 한달 단위로 표시 xlab(label = "날짜") + # x축, y축의 라벨 지정 ylab(label = " ") + ggtitle("누적 확진자,완치자,사망자 수") + # 제목 지정 theme(text=element_text(color="grey50")) + # 텍스트 색 지정 theme(axis.title=element_text(size=15)) + # 축 제목 크기 지정 theme(plot.title=element_text(hjust=0.5,size=20, color="royalblue4")) # 제목의 위치, 크기, 색 지정 ggplotly(p)
[HTML 파일]
covid_line.html3.72MB반응형'Data Analysis > R' 카테고리의 다른 글
[R] 회귀분석 실습 - 상관분석 (0) 2023.01.06 [R] R Markdown으로 분석 보고서 만들기 (0) 2022.12.30 [R] dplyr 패키지로 데이터 전처리 하기 (2) (1) 2022.12.15 [R] dplyr 패키지로 데이터 전처리 하기(1) (0) 2022.12.14 R Studio에서 단축키 확인 및 변경하기 (0) 2022.12.13