티스토리 뷰
Contents
0. 여는말
앞서 작성된 R 포트폴리오에서 아래와 같은 아쉬움이 있었다.
더불어 R을 다루는 사람이라면 필수 패키지중 하나인 Shiny에 대하여 더 알아보고자,
기존의 interactive graph를 web상에서 구현하는 Shiny App을 만들어보았다.
1. Shiny에 대한 이해
Shiny는 R의 패키지 중 하나로서, R에서 구현한 기능을 Web으로 보여줄 때 사용한다.
개인적으로 처음 Shiny를 보았을 때 "실무에서 강력한 기능"이라고 느꼈다.
비록 무료인 상태에서는 24시간만 사용할 수 있다는 단점이 있지만,
매출 자료나, 시각화할 수 있는 데이터를 Web상에서 보여주는 것은 그 활용성이 매우 커진다고 판단하였다.
매일 update되는 일일 매출 data같은 경우 유용하게 사용할 수 있을 것 같다.
(출근하여 Shiny App 실행하면 나중에 자동으로 종료될 것이므로)
포탈사이트와 Youtube에 'R Shiny'로 검색하면 설치부터 기초, 응용까지 자세한 내용을 한글로 쉽게 찾아볼 수 있어 자세한 설명은 생략하도록 하겠다.
참고 - Shiny 홈페이지
2. Data Set 및 상세내용
Data Set은 공공데이터포털에서 얻은 "범죄발생지_2016년 .csv"파일이며
범죄종류별/지역별 발생건수가 들어가 있는 데이터이다.
데이터 정제부분은 앞서 작성한 R 포트폴리오의 내용과 같은 맥락이므로,
이를 Shiny로 어떻게 구현했는지와 추가한 그래프들에 대하여 설명하겠다.
Shiny 구현
Shiny를 구현하는 방법에는 두가지가 있는데,
① Shiny App에 노출되는 직접적인 ui를 조절하는 부분인 ui.R과 실제 내용을 담당하는 server.R 2개의 파일로 나누어 작업하는 것
② App.R이라는 하나의 파일 내에 두가지 내용을 모두 담는 것이 있었다.
본인은 ①번 방법을 선택하였고, 실제 App에서 변경한 input값이
즉시 interactive graph에 바로 적용되어 변경되도록 구현하였다.
이를 위해서는 server.R과 ui.R 모두에 ui 세팅을 진행해야 했으며 코드는 아래와 같다. (일부만 캡쳐하였음)
Input type 중 범죄유형 한 가지를 시각화할때는 selectInput을, 범죄유형 여러가지를 한꺼번에 시각화할때는 selectInput(multi)을 사용하였다.
또한, 구현하고자 하는 데이터 형태 / 패키지에 따라 사용해야 하는 함수도 달랐다.
ui.R에서 shiny ui 구성 시 가로는 총 12로 계산하고 진행하면 되며,
비교적 ui가 깔끔한 wellPanel로 구성하였다.
추가한 그래프
범죄유형별 건수를 지도에 시각화할 때 interactive map이 가능한 kormap 패키지외에도,
tmap, ggplot, treemap 패키지를 사용하여 정보의 부족함이 없이 한 눈에 시각화될 수 있도록 하였다.
▼ 시각화 관련 코드
▼ 시각화 구현
<"tmap" 패키지 - 지역별 범죄건수 한 눈에 시각화>
<"ggplot" 패키지 - 지역별 범죄건수 막대그래프 시각화>
<"treemap" 패키지 - 지역별 범죄건수 기준 treemap 시각화>
결과
여러번의 ui 조정 끝에, 아래와 같은 최종 결과물을 얻을 수 있었다.
▼Input type: selectInput(한 가지 범죄유형만을 선택하는 경우) 캡쳐
좌측 사이드바에는 Input type(범죄유형 하나/다수 선택)과 map_test(범죄유형 선택),
그리고 treemap을 위치하였다.
그리고 우측에는 interactive map인 leaflet을 기본으로한 kormap 패키지로 구현한 지도를,
바로 아래 tmap/ggplot 그래프, 그리고 그 아래 Data Set을 시각화하였다.
여러가지 범죄 유형을 선택할 수 있는 selectInput(Multi)을 선택한 경우에도
전체적인 ui의 레이아웃은 동일하다.
▼Input type: selectInput(Multi)(범죄유형 다수 선택 가능한 경우)캡쳐
위와 동일하지만 interactive map과 막대그래프에 선택한 다수의 범죄유형이 모두 시각화된 것을 확인할 수 있다.
▼구현 과정 동영상 캡쳐
3. 닫는말
ⓐ 결과적으로 Shinyapps.io를 통해 URL이 있는 Shiny App으로 최종 결과물을 내고자 하였으나,
Korpop 패키지가 Shiny에서 구현이 되지 않는 것으로 확인되었다.
이를 미리 확인하였다면 프로젝트의 방향이 달랐을 것 같아 아쉬운 부분이 있다.
현재의 결과물을 Shiny App으로 구현하기위해 코드/패키지 변경 등 작업을 하는 것보다
앞으로 진행할 프로젝트를 URL이 있는 Shiny App으로 구현하기로 하였다.
ⓑ 또한, Shiny App에서 Data Set 파일을 Input하여 출력하는 것까지는 시도하여 성공했으나,
지역명이 써있는 어떠한 파일도 자동으로 지도에 시각화하기에는 데이터 정제, 인코딩 등
다양한 문제가 있어 계획을 철회하게 되었다.
Data Set을 Input 값으로 받아 활용하고 이를 다시 Output 값으로 저장하는 Shiny App에
어떤 분야의 Data를 적용하고 시각화하는 것이 적절할 지 강구하고 있다.
'R' 카테고리의 다른 글
[R] R로 구현하는 주성분 분석(Principal Component Analysis) (0) | 2018.02.15 |
---|---|
[R] R을 통한 Machine Learning 구현 - (2)Naive Bayes (0) | 2018.02.07 |
[R] R을 통한 Machine Learning 구현 - (1)KNN (0) | 2018.02.06 |
[R] 포트폴리오 - Kormap 패키지를 통한 2016년 지역별 범죄 유형별 분포 시각화 (4) | 2018.01.20 |
- Total
- Today
- Yesterday
- hadoop install
- 데이터 분석
- 하둡
- 하둡2.7
- Big Data
- hadoop
- 하둡설치
- hadoop 2.7 install
- 하둡 설치 가이드
- data
- hadoop2.7
- hadoop setup
- 빅데이터
- Data Analysis
- 하둡설치가이드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |