---
editor:
markdown:
wrap: 72
editor_options:
chunk_output_type: console
---
# 제20대 대통령 선거
<!-- ```{r} -->
<!-- #| eval: false -->
<!-- library(krvote2) -->
<!-- library(httr) -->
<!-- library(jsonlite) -->
<!-- # 서비스 키 설정 -->
<!-- service_key <- Sys.getenv("DATA_GO_DECODE_KEY") -->
<!-- set_krvote2_key(service_key) -->
<!-- elections <- get_all_elections() -->
<!-- presid_20 <- elections |> -->
<!-- as_tibble() |> -->
<!-- arrange(desc(sgId)) |> -->
<!-- select(sgId, sgName, sgTypecode) |> -->
<!-- filter(sgId == "20220309", sgTypecode == "1") -->
<!-- presid_20 -->
<!-- ``` -->
<!-- ## 선거구 -->
<!-- ```{r} -->
<!-- #| eval: false -->
<!-- precint_20 <- krvote2::get_all_constituencies(sgId="20220309", sgTypecode="1") -->
<!-- precint_20 |> -->
<!-- as_tibble() -->
<!-- # 대통령 선거구는 1개라 시군구로 상세정보 -->
<!-- precint_20_sgg <- krvote2::get_all_sigungu(sgId="20220309") |> -->
<!-- as_tibble() |> -->
<!-- filter(sdName != " ") -->
<!-- ``` -->
<!-- ## 투개표수 -->
<!-- ### 스크립트 -->
<!-- ```{r} -->
<!-- #| eval: false -->
<!-- sgg_raw <- krvote2::get_count_info(sgId = "20220309", -->
<!-- sgTypecode = "1", -->
<!-- sdName = "서울특별시", -->
<!-- wiwName = "종로구") |> -->
<!-- as_tibble() -->
<!-- sgg_tbl <- sgg_raw |> -->
<!-- pivot_longer(cols = starts_with(c("jd", "hbj", "dugsu")), -->
<!-- names_to = c(".value", "cand_num"), -->
<!-- names_pattern = "([a-z]+)(\\d+)", -->
<!-- values_drop_na = TRUE, -->
<!-- values_transform = list(dugsu = as.numeric)) |> -->
<!-- mutate(across(sunsu:gigwonsu, as.numeric)) |> -->
<!-- mutate(득표율 = dugsu / yutusu, -->
<!-- 투표율 = tusu / sunsu) |> -->
<!-- select(sdName, sggName, jd, hbj, sunsu, tusu, 투표율, yutusu, dugsu, 득표율) -->
<!-- ``` -->
<!-- ### 함수 -->
<!-- ```{r} -->
<!-- #| eval: false -->
<!-- calculate_winner <- function(sdName = "서울특별시", wiwName = "종로구") { -->
<!-- cat("\n======================================\n") -->
<!-- cat(sdName, " : ", wiwName, "\n") -->
<!-- sgg_raw <- krvote2::get_count_info(sgId = "20220309", -->
<!-- sgTypecode = "1", -->
<!-- sdName = sdName, -->
<!-- wiwName = wiwName) |> -->
<!-- as_tibble() -->
<!-- sgg_tbl <- sgg_raw |> -->
<!-- pivot_longer(cols = starts_with(c("jd", "hbj", "dugsu")), -->
<!-- names_to = c(".value", "cand_num"), -->
<!-- names_pattern = "([a-z]+)(\\d+)", -->
<!-- values_drop_na = TRUE, -->
<!-- values_transform = list(dugsu = as.numeric)) |> -->
<!-- mutate(across(sunsu:gigwonsu, as.numeric)) |> -->
<!-- mutate(득표율 = dugsu / yutusu, -->
<!-- 투표율 = tusu / sunsu) |> -->
<!-- select(sdName, sggName, jd, hbj, sunsu, tusu, 투표율, yutusu, dugsu, 득표율) -->
<!-- return(sgg_tbl) -->
<!-- } -->
<!-- # calculate_winner("서울특별시", "종로구") -->
<!-- calculate_winner("대구광역시", "중구") # 무투표 당선 -->
<!-- precint_20_sgg_tbl <- precint_20_sgg |> -->
<!-- as_tibble() |> -->
<!-- mutate(data = map2(sdName, wiwName, calculate_winner)) -->
<!-- precint_20_sgg_tbl |> -->
<!-- write_rds("data/대선_20대_시군구.rds") -->
<!-- ``` -->
<!-- ```{r} -->
<!-- #| eval: false -->
<!-- precint_20_sgg_tbl <- read_rds("data/대선_20대_시군구.rds") -->
<!-- precint_20_sgg_viz <- precint_20_sgg_tbl |> -->
<!-- select(wiwName, data) |> -->
<!-- unnest(data) |> -->
<!-- group_by(sdName, wiwName, jd, hbj) |> -->
<!-- summarise(sunsu = sum(sunsu), -->
<!-- tusu = sum(tusu), -->
<!-- yutusu = sum(yutusu), -->
<!-- dugsu = sum(dugsu)) |> -->
<!-- mutate(득표율 = dugsu / yutusu, -->
<!-- 투표율 = tusu / sunsu) |> -->
<!-- ungroup() |> -->
<!-- group_by(sdName, wiwName) |> -->
<!-- mutate(순위 = rank(desc(득표율))) |> -->
<!-- filter(순위 %in% c(1,2)) |> -->
<!-- arrange(순위) |> -->
<!-- mutate(차이 = abs(lead(득표율) - 득표율)) |> -->
<!-- set_names(c("시도", "시군구", "정당", "후보", "선거인수", "투표수", "유효투표수", "득표수", "득표율", "투표율", "순위", "차이")) -->
<!-- ``` -->
<!-- ## 결과 -->
<!-- ```{r} -->
<!-- #| eval: false -->
<!-- library(reactable) -->
<!-- precint_20_sgg_viz |> -->
<!-- filter(!is.na(차이)) |> -->
<!-- select(-유효투표수, -순위) |> -->
<!-- reactable( -->
<!-- searchable = TRUE, -->
<!-- filterable = TRUE, -->
<!-- defaultColDef = colDef( -->
<!-- header = function(value) gsub(".", " ", value, fixed = TRUE), -->
<!-- align = "center", -->
<!-- minWidth = 80, -->
<!-- headerStyle = list(background = "#f7f7f8") -->
<!-- ), -->
<!-- columns = list( -->
<!-- 시도 = colDef(minWidth = 60), -->
<!-- 선거구 = colDef(minWidth = 90), -->
<!-- 정당 = colDef(minWidth = 100), -->
<!-- 후보 = colDef(minWidth = 80), -->
<!-- 선거인수 = colDef(format = colFormat(separators = TRUE, digits = 0)), -->
<!-- 투표수 = colDef(format = colFormat(separators = TRUE, digits = 0)), -->
<!-- 득표수 = colDef(format = colFormat(separators = TRUE, digits = 0)), -->
<!-- 득표율 = colDef(format = colFormat(percent = TRUE, digits = 1)), -->
<!-- 투표율 = colDef(format = colFormat(percent = TRUE, digits = 1)), -->
<!-- 차이 = colDef(format = colFormat(percent = TRUE, digits = 2)) -->
<!-- ), -->
<!-- bordered = TRUE, -->
<!-- highlight = TRUE, -->
<!-- striped = TRUE, -->
<!-- compact = TRUE, -->
<!-- wrap = FALSE, -->
<!-- resizable = TRUE, -->
<!-- showPageSizeOptions = TRUE, -->
<!-- pageSizeOptions = c(10, 20, 50, 100), -->
<!-- defaultPageSize = 20, -->
<!-- showPagination = TRUE, -->
<!-- paginationType = "numbers" -->
<!-- ) -->
<!-- ``` -->
<!-- ## 구시군의 장 -->
<!-- ### 선거구지도 -->
<!-- ```{r} -->
<!-- library(sf) -->
<!-- sf_use_s2(FALSE) -->
<!-- admin_sf <- st_read("data/maps/HangJeongDong_ver20220401.geojson") -->
<!-- # 행정동지도와 선거구 매핑 -->
<!-- admin_election_data <- tribble( -->
<!-- ~sidonm, ~sggnm, ~precinct, -->
<!-- "강원도", "강릉시", "강릉시", -->
<!-- "강원도", "고성군", "고성군", -->
<!-- "강원도", "동해시", "동해시", -->
<!-- "강원도", "삼척시", "삼척시", -->
<!-- "강원도", "속초시", "속초시", -->
<!-- "강원도", "양구군", "양구군", -->
<!-- "강원도", "양양군", "양양군", -->
<!-- "강원도", "영월군", "영월군", -->
<!-- "강원도", "원주시", "원주시", -->
<!-- "강원도", "인제군", "인제군", -->
<!-- "강원도", "정선군", "정선군", -->
<!-- "강원도", "철원군", "철원군", -->
<!-- "강원도", "춘천시", "춘천시", -->
<!-- "강원도", "태백시", "태백시", -->
<!-- "강원도", "평창군", "평창군", -->
<!-- "강원도", "홍천군", "홍천군", -->
<!-- "강원도", "화천군", "화천군", -->
<!-- "강원도", "횡성군", "횡성군", -->
<!-- "경기도", "가평군", "가평군", -->
<!-- "경기도", "고양시덕양구", "고양시", -->
<!-- "경기도", "고양시일산동구", "고양시", -->
<!-- "경기도", "고양시일산서구", "고양시", -->
<!-- "경기도", "과천시", "과천시", -->
<!-- "경기도", "광명시", "광명시", -->
<!-- "경기도", "광주시", "광주시", -->
<!-- "경기도", "구리시", "구리시", -->
<!-- "경기도", "군포시", "군포시", -->
<!-- "경기도", "김포시", "김포시", -->
<!-- "경기도", "남양주시", "남양주시", -->
<!-- "경기도", "동두천시", "동두천시", -->
<!-- "경기도", "부천시", "부천시", -->
<!-- "경기도", "성남시분당구", "성남시", -->
<!-- "경기도", "성남시수정구", "성남시", -->
<!-- "경기도", "성남시중원구", "성남시", -->
<!-- "경기도", "수원시권선구", "수원시", -->
<!-- "경기도", "수원시영통구", "수원시", -->
<!-- "경기도", "수원시장안구", "수원시", -->
<!-- "경기도", "수원시팔달구", "수원시", -->
<!-- "경기도", "시흥시", "시흥시", -->
<!-- "경기도", "안산시단원구", "안산시", -->
<!-- "경기도", "안산시상록구", "안산시", -->
<!-- "경기도", "안성시", "안성시", -->
<!-- "경기도", "안양시동안구", "안양시", -->
<!-- "경기도", "안양시만안구", "안양시", -->
<!-- "경기도", "양주시", "양주시", -->
<!-- "경기도", "양평군", "양평군", -->
<!-- "경기도", "여주시", "여주시", -->
<!-- "경기도", "연천군", "연천군", -->
<!-- "경기도", "오산시", "오산시", -->
<!-- "경기도", "용인시기흥구", "용인시", -->
<!-- "경기도", "용인시수지구", "용인시", -->
<!-- "경기도", "용인시처인구", "용인시", -->
<!-- "경기도", "의왕시", "의왕시", -->
<!-- "경기도", "의정부시", "의정부시", -->
<!-- "경기도", "이천시", "이천시", -->
<!-- "경기도", "파주시", "파주시", -->
<!-- "경기도", "평택시", "평택시", -->
<!-- "경기도", "포천시", "포천시", -->
<!-- "경기도", "하남시", "하남시", -->
<!-- "경기도", "화성시", "화성시", -->
<!-- "경상남도", "거제시", "거제시", -->
<!-- "경상남도", "거창군", "거창군", -->
<!-- "경상남도", "고성군", "고성군", -->
<!-- "경상남도", "김해시", "김해시", -->
<!-- "경상남도", "남해군", "남해군", -->
<!-- "경상남도", "밀양시", "밀양시", -->
<!-- "경상남도", "사천시", "사천시", -->
<!-- "경상남도", "산청군", "산청군", -->
<!-- "경상남도", "양산시", "양산시", -->
<!-- "경상남도", "의령군", "의령군", -->
<!-- "경상남도", "진주시", "진주시", -->
<!-- "경상남도", "창녕군", "창녕군", -->
<!-- "경상남도", "창원시마산합포구", "창원시", -->
<!-- "경상남도", "창원시마산회원구", "창원시", -->
<!-- "경상남도", "창원시성산구", "창원시", -->
<!-- "경상남도", "창원시의창구", "창원시", -->
<!-- "경상남도", "창원시진해구", "창원시", -->
<!-- "경상남도", "통영시", "통영시", -->
<!-- "경상남도", "하동군", "하동군", -->
<!-- "경상남도", "함안군", "함안군", -->
<!-- "경상남도", "함양군", "함양군", -->
<!-- "경상남도", "합천군", "합천군", -->
<!-- "경상북도", "경산시", "경산시", -->
<!-- "경상북도", "경주시", "경주시", -->
<!-- "경상북도", "고령군", "고령군", -->
<!-- "경상북도", "구미시", "구미시", -->
<!-- "경상북도", "군위군", "군위군", -->
<!-- "경상북도", "김천시", "김천시", -->
<!-- "경상북도", "문경시", "문경시", -->
<!-- "경상북도", "봉화군", "봉화군", -->
<!-- "경상북도", "상주시", "상주시", -->
<!-- "경상북도", "성주군", "성주군", -->
<!-- "경상북도", "안동시", "안동시", -->
<!-- "경상북도", "영덕군", "영덕군", -->
<!-- "경상북도", "영양군", "영양군", -->
<!-- "경상북도", "영주시", "영주시", -->
<!-- "경상북도", "영천시", "영천시", -->
<!-- "경상북도", "예천군", "예천군", -->
<!-- "경상북도", "울릉군", "울릉군", -->
<!-- "경상북도", "울진군", "울진군", -->
<!-- "경상북도", "의성군", "의성군", -->
<!-- "경상북도", "청도군", "청도군", -->
<!-- "경상북도", "청송군", "청송군", -->
<!-- "경상북도", "칠곡군", "칠곡군", -->
<!-- "경상북도", "포항시남구", "포항시", -->
<!-- "경상북도", "포항시북구", "포항시", -->
<!-- "광주광역시", "광산구", "광산구", -->
<!-- "광주광역시", "남구", "남구", -->
<!-- "광주광역시", "동구", "동구", -->
<!-- "광주광역시", "북구", "북구", -->
<!-- "광주광역시", "서구", "서구", -->
<!-- "대구광역시", "남구", "남구", -->
<!-- "대구광역시", "달서구", "달서구", -->
<!-- "대구광역시", "달성군", "달성군", -->
<!-- "대구광역시", "동구", "동구", -->
<!-- "대구광역시", "북구", "북구", -->
<!-- "대구광역시", "서구", "서구", -->
<!-- "대구광역시", "수성구", "수성구", -->
<!-- "대구광역시", "중구", "중구", -->
<!-- "대전광역시", "대덕구", "대덕구", -->
<!-- "대전광역시", "동구", "동구", -->
<!-- "대전광역시", "서구", "서구", -->
<!-- "대전광역시", "유성구", "유성구", -->
<!-- "대전광역시", "중구", "중구", -->
<!-- "부산광역시", "강서구", "강서구", -->
<!-- "부산광역시", "금정구", "금정구", -->
<!-- "부산광역시", "기장군", "기장군", -->
<!-- "부산광역시", "남구", "남구", -->
<!-- "부산광역시", "동구", "동구", -->
<!-- "부산광역시", "동래구", "동래구", -->
<!-- "부산광역시", "부산진구", "부산진구", -->
<!-- "부산광역시", "북구", "북구", -->
<!-- "부산광역시", "사상구", "사상구", -->
<!-- "부산광역시", "사하구", "사하구", -->
<!-- "부산광역시", "서구", "서구", -->
<!-- "부산광역시", "수영구", "수영구", -->
<!-- "부산광역시", "연제구", "연제구", -->
<!-- "부산광역시", "영도구", "영도구", -->
<!-- "부산광역시", "중구", "중구", -->
<!-- "부산광역시", "해운대구", "해운대구", -->
<!-- "서울특별시", "강남구", "강남구", -->
<!-- "서울특별시", "강동구", "강동구", -->
<!-- "서울특별시", "강북구", "강북구", -->
<!-- "서울특별시", "강서구", "강서구", -->
<!-- "서울특별시", "관악구", "관악구", -->
<!-- "서울특별시", "광진구", "광진구", -->
<!-- "서울특별시", "구로구", "구로구", -->
<!-- "서울특별시", "금천구", "금천구", -->
<!-- "서울특별시", "노원구", "노원구", -->
<!-- "서울특별시", "도봉구", "도봉구", -->
<!-- "서울특별시", "동대문구", "동대문구", -->
<!-- "서울특별시", "동작구", "동작구", -->
<!-- "서울특별시", "마포구", "마포구", -->
<!-- "서울특별시", "서대문구", "서대문구", -->
<!-- "서울특별시", "서초구", "서초구", -->
<!-- "서울특별시", "성동구", "성동구", -->
<!-- "서울특별시", "성북구", "성북구", -->
<!-- "서울특별시", "송파구", "송파구", -->
<!-- "서울특별시", "양천구", "양천구", -->
<!-- "서울특별시", "영등포구", "영등포구", -->
<!-- "서울특별시", "용산구", "용산구", -->
<!-- "서울특별시", "은평구", "은평구", -->
<!-- "서울특별시", "종로구", "종로구", -->
<!-- "서울특별시", "중구", "중구", -->
<!-- "서울특별시", "중랑구", "중랑구", -->
<!-- "세종특별자치시", "세종시", NA_character_, -->
<!-- "울산광역시", "남구", "남구", -->
<!-- "울산광역시", "동구", "동구", -->
<!-- "울산광역시", "북구", "북구", -->
<!-- "울산광역시", "울주군", "울주군", -->
<!-- "울산광역시", "중구", "중구", -->
<!-- "인천광역시", "강화군", "강화군", -->
<!-- "인천광역시", "계양구", "계양구", -->
<!-- "인천광역시", "남동구", "남동구", -->
<!-- "인천광역시", "동구", "동구", -->
<!-- "인천광역시", "미추홀구", "미추홀구", -->
<!-- "인천광역시", "부평구", "부평구", -->
<!-- "인천광역시", "서구", "서구", -->
<!-- "인천광역시", "연수구", "연수구", -->
<!-- "인천광역시", "옹진군", "옹진군", -->
<!-- "인천광역시", "중구", "중구", -->
<!-- "전라남도", "강진군", "강진군", -->
<!-- "전라남도", "고흥군", "고흥군", -->
<!-- "전라남도", "곡성군", "곡성군", -->
<!-- "전라남도", "광양시", "광양시", -->
<!-- "전라남도", "구례군", "구례군", -->
<!-- "전라남도", "나주시", "나주시", -->
<!-- "전라남도", "담양군", "담양군", -->
<!-- "전라남도", "목포시", "목포시", -->
<!-- "전라남도", "무안군", "무안군", -->
<!-- "전라남도", "보성군", "보성군", -->
<!-- "전라남도", "순천시", "순천시", -->
<!-- "전라남도", "신안군", "신안군", -->
<!-- "전라남도", "여수시", "여수시", -->
<!-- "전라남도", "영광군", "영광군", -->
<!-- "전라남도", "영암군", "영암군", -->
<!-- "전라남도", "완도군", "완도군", -->
<!-- "전라남도", "장성군", "장성군", -->
<!-- "전라남도", "장흥군", "장흥군", -->
<!-- "전라남도", "진도군", "진도군", -->
<!-- "전라남도", "함평군", "함평군", -->
<!-- "전라남도", "해남군", "해남군", -->
<!-- "전라남도", "화순군", "화순군", -->
<!-- "전라북도", "고창군", "고창군", -->
<!-- "전라북도", "군산시", "군산시", -->
<!-- "전라북도", "김제시", "김제시", -->
<!-- "전라북도", "남원시", "남원시", -->
<!-- "전라북도", "무주군", "무주군", -->
<!-- "전라북도", "부안군", "부안군", -->
<!-- "전라북도", "순창군", "순창군", -->
<!-- "전라북도", "완주군", "완주군", -->
<!-- "전라북도", "익산시", "익산시", -->
<!-- "전라북도", "임실군", "임실군", -->
<!-- "전라북도", "장수군", "장수군", -->
<!-- "전라북도", "전주시덕진구", "전주시", -->
<!-- "전라북도", "전주시완산구", "전주시", -->
<!-- "전라북도", "정읍시", "정읍시", -->
<!-- "전라북도", "진안군", "진안군", -->
<!-- "제주특별자치도", "서귀포시", NA_character_, -->
<!-- "제주특별자치도", "제주시", NA_character_, -->
<!-- "충청남도", "계룡시", "계룡시", -->
<!-- "충청남도", "공주시", "공주시", -->
<!-- "충청남도", "금산군", "금산군", -->
<!-- "충청남도", "논산시", "논산시", -->
<!-- "충청남도", "당진시", "당진시", -->
<!-- "충청남도", "보령시", "보령시", -->
<!-- "충청남도", "부여군", "부여군", -->
<!-- "충청남도", "서산시", "서산시", -->
<!-- "충청남도", "서천군", "서천군", -->
<!-- "충청남도", "아산시", "아산시", -->
<!-- "충청남도", "예산군", "예산군", -->
<!-- "충청남도", "천안시동남구", "천안시", -->
<!-- "충청남도", "천안시서북구", "천안시", -->
<!-- "충청남도", "청양군", "청양군", -->
<!-- "충청남도", "태안군", "태안군", -->
<!-- "충청남도", "홍성군", "홍성군", -->
<!-- "충청북도", "괴산군", "괴산군", -->
<!-- "충청북도", "단양군", "단양군", -->
<!-- "충청북도", "보은군", "보은군", -->
<!-- "충청북도", "영동군", "영동군", -->
<!-- "충청북도", "옥천군", "옥천군", -->
<!-- "충청북도", "음성군", "음성군", -->
<!-- "충청북도", "제천시", "제천시", -->
<!-- "충청북도", "증평군", "증평군", -->
<!-- "충청북도", "진천군", "진천군", -->
<!-- "충청북도", "청주시상당구", "청주시", -->
<!-- "충청북도", "청주시서원구", "청주시", -->
<!-- "충청북도", "청주시청원구", "청주시", -->
<!-- "충청북도", "청주시흥덕구", "청주시", -->
<!-- "충청북도", "충주시", "충주시" -->
<!-- ) -->
<!-- admin_sgg_sf <- admin_sf |> -->
<!-- group_by(sidonm, sggnm) |> -->
<!-- summarise(geometry = st_union(geometry)) -->
<!-- admin_sgg_sf -->
<!-- ``` -->
## 시각화
```{r}
#| message: false
#| warning: false
#| results: "hide"
#| eval: false
library(leaflet)
library(sf)
library(tidyverse)
sf_use_s2(FALSE)
# 시도별 폴리곤 데이터 준비
sido_sf <- bitSpatial::admi %>%
group_by(mega_nm) %>%
summarise(geometry = st_union(geometry))
sgg_viz_winner <- precint_20_sgg_viz |>
filter(순위 == 1) |>
select(시도 , 시군구, 당선정당=정당, 당선후보=후보, 차이) |>
arrange(시도, 시군구) |>
ungroup()
sgg_viz_loser <- precint_20_sgg_viz |>
filter(순위 != 1) |>
select(시도, 시군구, 낙선정당=정당, 낙선후보=후보) |>
arrange(시도, 시군구) |>
ungroup()
sgg_viz_sf <- admin_sgg_sf |>
arrange(sidonm, sggnm) |>
bind_cols(sgg_viz_winner |> select(당선정당, 당선후보, 차이)) |>
bind_cols(sgg_viz_loser |> select(낙선정당, 낙선후보)) |>
mutate(차이 = ifelse(당선정당 == "더불어민주당", 차이, -차이))
summary(sgg_viz_sf$차이)
# 지도 그리기
colors <- c("#8B0000", "#FF0000", "#FFA07A", "white", "#ADD8E6", "#0000FF", "#00008B")
bins <- c(-Inf, -0.2, -0.1, -0.05, 0.05, 0.1, 0.2, Inf)
color_function <- colorBin(colors, sgg_viz_sf$차이, bins = bins)
president_20_m <- sgg_viz_sf |>
mutate(precinct = str_glue("{sidonm} {sggnm}")) |>
leaflet() %>%
addTiles() %>%
addPolygons(
fillColor = ~colorBin(colors, 차이, bins = bins)(차이),
weight = 1.5,
opacity = 0.5,
color = "white",
dashArray = "3",
fillOpacity = 0.7,
highlight = highlightOptions(
weight = 1.5,
color = "#666",
dashArray = "",
fillOpacity = 0.7,
bringToFront = TRUE),
label = lapply(
sprintf(
"<b>%s</b><br/>득표차: %2.1f%%<br/>1위정당: %s<br/>1위후보: %s<br/>2위정당: %s<br/>2위후보: %s",
sgg_viz_sf$sggnm, 100*sgg_viz_sf$차이,
sgg_viz_sf$당선정당, sgg_viz_sf$당선후보,
sgg_viz_sf$낙선정당, sgg_viz_sf$낙선후보
),
htmltools::HTML
),
labelOptions = labelOptions(
style = list(
"font-weight" = "normal",
padding = "3px 8px"
),
textsize = "15px",
direction = "auto",
interactive = FALSE
# sticky = TRUE
)) %>%
addPolylines(
data = sido_sf,
weight = 5,
opacity = 1,
color = "black"
) %>%
addLegend(
pal = color_function,
values = ~차이,
labFormat = labelFormat(
prefix = "",
suffix = "%",
transform = function(x) 100 * x
),
opacity = 0.7,
title = "득표율 차이",
position = "bottomright"
)
library(htmlwidgets)
saveWidget(president_20_m, file="data/president_20_m.html", selfcontained = TRUE)
```
:::{.column-body-outset}
<iframe src="data/president_20_m.html" width="120%" height="800px"></iframe>
:::