1. 샤이니 app 활용 사례 : 커피 전문점 접근성 분석하기
1) 라이브러리 불러오기
load("./data/coffee/coffee_shop.rdata")
head(coffee_shop, 2)
library(shiny);library(leaflet);library(leaflet.extras);library(dplyr)
2) ui 구현하기
ui <- bootstrapPage(
# 페이지 스타일 설정
tags$style(type = "text/css", "html, body {width:100%;height:100%"),
# 지도 설정
leafletOutput("map", width = "100%", height = "100%"),
# 메뉴 패널
absolutePanel(top = 10, right = 10,
# 선택 입력
selectInput(
inputId = "sel_brand", # 입력 id
labe = tags$span( # 라벨
style="color: black;", "프랜차이즈를 선택하시오"),
choices = unique(coffee_shop$brand), # 선택 리스트
selected = unique(coffee_shop$brand)[2]), # 기본 선택
# 슬라이드 입력
sliderInput(
inputId = "range", # 입력 아이디
label = tags$span( # 라벨
style="color: black;", "접근성 범위를 선택하시오"),
min = 0,
max = 100,
value = c(60,80), # 기본 선택 범위
step = 10), # 단계
# 출력
plotOutput("density", height = 230),
)
)
3) 서버 구현부터 실행까지
# 반응식 : 브랜드 선택
server <- function(input, output, session) {
brand_sel = reactive({
brand = subset(coffee_shop,
brand == input$sel_brand &
metro_idx >= input$range[1] &
metro_idx <= input$range[2]
)
})
# 밀도 함수 출력
output$density <- renderPlot({
ggplot(data = with(density(plot_sel()$metro_idx),
data.frame(x,y)), mapping = aes(x,y))+
geom_line()+
xlim(0, 100) +
xlab('접근성 지수')+ ylab('빈도')+
geom_vline(xintercept = input$range[1], color='red', size=0.5)+
geom_vline(xintercept = input$range[2], color='red', size=0.5)+
theme(axis.text.y = element_blank(),
axis.ticks.y = element_blank())
})
# 지도 출력
output$map <- renderLeaflet({
leaflet(brand_sel(), width = "100%", height = "100%") %>%
addTiles() %>%
setView(lng = 127.0381, lat = 37.59512, zoom = 11) %>%
addPulseMarkers(lng = ~x, lat = ~y,
label = ~name,
icon = makePulseIcon())
})
}
shinyApp(ui, server)
* 핵심
- addPulseMarkers : 레이더처럼 표시 되는 마크
- geom_vline(xintercept = input$range[1], color='red', size=0.5) : 구분선
- selectInput : 선택 입력
728x90
반응형
LIST
'배운 책들 정리 > 공공데이터로 배우는 R 데이터 분석 with 샤이니' 카테고리의 다른 글
공공데이터 with 샤이니 데이터 분석 프로젝트 - 문제 정의 1 (0) | 2023.03.17 |
---|---|
공공데이터 with 샤이니 12 - 샤이니 app 활용 사례 (지진 발생 분석) (1) | 2023.03.15 |
공공데이터 with 샤이니 9,10 - 샤이니 입문하기, 데이터 분석 app 개발하기 (0) | 2023.03.14 |
공공데이터 with 샤이니 7,8 - 분석 주제를 지도로 시각화하기, 통계 분석과 시각화 (0) | 2023.03.09 |
공공데이터 with 샤이니 6,7 - 지오 데이터 프레임, 분석 주제를 지도로 시각화하기 (0) | 2023.03.08 |