일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- ggsurvplot
- R
- 카플란마이어
- R select
- ggplot2
- R문법
- 확률실험
- 이산형 확률분포
- ggplot()
- R 연습문제
- 의사결정나무
- R mutate
- R ggplot2
- 생존분석
- CrossValidation
- 미국 선거데이터
- 데이터 핸들링
- R filter
- 데이터핸들링
- 콕스비례모형
- 교차타당성
- R 결측치
- dplyr
- 주식데이터시각화
- 생존그래프
- geom_errorbar
- ISLR
- Bias-Variance Tradeoff
- R dplyr
- 강화학습 #추천서적 #강화학습인액션
- Today
- Total
Must Learning With Statistics
[R 대시보드] Flexdashboard 패지키를 활용한 R 대시보드 만들기 2편 본문
Flexdashboard를 통한 Dashboard 만들기 2편
1편에서는 출력설정 및 레이아웃 배치를 주로 다뤄보았다면, 이번에는 컨텐츠를 작성하는 방법에 대해 다뤄보도록 하겠습니다. 먼저 컨텐츠의 종류는 다음과 같습니다.
- 설명 Text 작성
- ggplot 및 plotly 적용해서 그래프 작성
- value Box & gauge 함수를 통한 KPI 정보 제공
- render 함수를 통해 동적 그래프 생성
- 기타 아이콘 코드 및 색상 조정
1. 설명 Text 작성
- 그냥 작성하면 됩니다. 다만 Markdown 문법을 조금 익히시고 쓰면 더 효과적일 것입니다.
2. ggplot 및 plotly 적용해서 그래프 작성
- 'plotly' 패키지를 설치한 후, ggplot으로 작성한 그래프를 ggplotly()함수로 덮어주면 완료됩니다.
library(dplyr)
YEAR2 = IMDB %>%
group_by(Year) %>%
dplyr::summarise(MEAN = mean(Revenue..Millions.,na.rm = TRUE),
MEDIAN = median(Revenue..Millions.,na.rm = TRUE))
library(ggplot2)
p = ggplot(YEAR2) +
geom_line(aes(x=Year,y=MEAN),group = 1 , col ='red') +
geom_point(aes(x=Year,y=MEAN), col ='red') +
geom_line(aes(x=Year,y=MEDIAN),group = 1 , col = 'royalblue') +
geom_point(aes(x=Year,y=MEDIAN) , col = 'royalblue') +
xlab("년도") + ylab("매출액")
ggplotly(p)
3. value Box & gauge 플롯 작성
- valueBox : 플롯 안에 값을 텍스트 형식으로 보여주는 명령어 입니다.
valueBox(value = paste(nrow(IMDB),"movies"), # value => 보여주고 싶은 통계값
color='royalblue') # color => 바탕 색 설정
- gauge : 게이지 형식의 그래프 표시 명령어
gauge(round(mean(IMDB$Metascore,na.rm = TRUE),2), # 보여줄 통계값 계산 코드
min = 0, max = 100, # 게이지 범위 설정(최소 ~ 최대)
gaugeSectors( # 게이지 영역을 구분함으로써, 각 구간에 따라 색이 변하게 표현해줌
success = c(80, 100), warning = c(40, 79), danger = c(0, 39)
))
4. render 함수를 통해 동적 그래프 생성
-
render 함수는 input parmater를 설정해줌으로써, 그래프가 설정하는 input에 따라 변할 수 있게 해주는 함수입니다. 만드는 방식은 다음과 같습니다.
-
input 창을 만들어줍니다.
-
그래프가 해당 input값을 받아줄 수 있도록 작업을 해줍니다. 방식은 plotly처럼 그래프 위에 씌어주는 것이라고 볼 수 있습니다. 조금은 복잡하지만 구조만 이해하면 어렵지 않습니다.
- input 만들기
-
input 창의 종류는 크게 3가지가 있습니다.
-
selectInput
-
numericInput
-
sliderInput
# selectInput
selectInput('Genre', 'Genre',IMDB$FIRST_GENRE,
selected = 'action')
첫번째 'Genre'는 input 값의 이름을 input$Genre로 맞춰주기 위해서입니다.
-
selectInput의 값은 R내에서 input이란 객체 안에 존재하게 됩니다.
-
첫번째 'Genre'는 input 값의 이름을 input$Genre로 맞춰주기 위해서입니다.
-
두번때 'Genre'는 페이지에서 인풋칸의 제목을 'Genre'로 써주는 것입니다.
-
IMDB$First_Genre는 input 창에 어떤 변수의 값들을 고를 수 있게 할 것인지 설정해주기 위함입니다.
-
'selected'는 input 명령어의 기본 옵션으로 처음 실행했을 때 시작 default값을 어떤 것으로 할지 설정해주는 옵션입니다.
# 기타 input 설정
numericInput("Rating", "min Rating:", 6)
## slider input 예시 , 해당대시보드에서는 사용하지 않음.
sliderInput("bw_adjust", label = "Bandwidth adjustment:",
min = 0.2, max = 2, value = 1, step = 0.2)
- renderplot 만들기
-
renderplot을 만드는 방법은 다음과 같습니다.
-
input에서 설정된 값을 받아낼 수 있도록 selectedIMDB를 생성
-
해당 selectedIMDB를 통해 ggplot명령어 연계
-
완성 후에 render___명령어들로 덮어주기
# 1단계 selectedIMDB 생성 방법
selectedIMDB = reactive({
subset(IMDB,FIRST_GENRE==input$Genre)})
## selectInput에서 첫 Genre가 input$Genre로 input값이 저장되도록 하는 역할을 합니다.
# 2단계 renderPlotly로 동적 그래프 확인하기
## renderPlotly로 덮어주기 , render + plotly 합친 것이라고 보면 됩니다.
renderPlotly({
## YEAR2 라는 데이터는 input 값에 따라 변동 될수 있도록 설정
YEAR2 = selectedIMDB() %>% # 1단계에서 만든 selectedIMDB 설정
group_by(Year) %>%
dplyr::summarise(MEAN = mean(Revenue..Millions.,na.rm = TRUE),
MEDIAN = median(Revenue..Millions.,na.rm = TRUE))
## ggplot2 시작
p = ggplot(YEAR2) +
geom_line(aes(x=Year,y=MEAN),group = 1 , col ='red') +
geom_point(aes(x=Year,y=MEAN), col ='red') +
geom_line(aes(x=Year,y=MEDIAN),group = 1 , col = 'royalblue') +
geom_point(aes(x=Year,y=MEDIAN) , col = 'royalblue') +
xlab("년도") + ylab("매출액")
ggplotly(p)
})
-
나머지 그래프 및 표들도 연습삼아 해보시면 될 것 같습니다. 대시보드 만들기는 여기까지로 마치도록 하겠습니다.
-
대시보드에서 가장 중요한 것은 디자인 센스 입니다.
'R Code' 카테고리의 다른 글
[R] 중고 자동차 데이터를 활용한 탐색적 자료분석 실전 예시 (1) | 2020.03.01 |
---|---|
[R ggplot2] 테슬라 주가 데이터를 활용한 시계열 자료 시각화 (4) | 2020.02.27 |
관광데이터를 이용한 R 연관규칙 분석 (2) | 2020.02.27 |
[R ggplot2 시각화] 대한민국 코로나 데이터 시각화 (0) | 2020.02.22 |
[R 대시보드] Flexdashboard 패지키를 활용한 R 대시보드 만들기 1편 (0) | 2020.02.09 |