티스토리 뷰

반응형

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를 적용하고 시각화하는 것이 적절할 지 강구하고 있다.

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함