1. 구글 추세를 통해본 주요 대선후보

가장 최근 1주일(4월 28 ~ 5월3일) 각 주요 대선후보별 구글 추세를 보는 다음과 같다.

2. 지역별 후보 구글 추세

3. R 코드

# 0. 환경설정 --------------------------------------------------
# devtools::install_github("PMassicotte/gtrendsR")
library(lubridate)
library(plotly)
library(gtrendsR)
library(tidyverse)
library(extrafont)
library(highcharter)
loadfonts()
par(family = "NanumBarunGothic")

# 1. 단일 검색어 추세 --------------------------------------------------
## 1.1. 데이터 가져오기
five_trend <- gtrends(c("문재인", "홍준표", "안철수", "유승민", "심상정"), time="2017-04-28 2017-05-05", geo="KR")

saveRDS(five_trend, "data/five_trend.RDS")

# 2. 데이터 정제 --------------------------------------------------

five_trend <- readRDS("data/five_trend.RDS")

trend_df <- five_trend$interest_over_time %>% 
  mutate(date = ymd(date))

region_df <- five_trend$interest_by_region %>% 
  dplyr::rename(name = location) %>% 
  group_by(keyword, name) %>% 
  summarise(hits = mean(hits)) %>% ungroup

regions_df <- region_df %>% 
  mutate(name = ifelse(name=="Jeollanam-do", "South Jeolla", name)) %>%
  mutate(name = ifelse(name=="Jeollabuk-do", "North Jeolla", name)) %>%
  mutate(name = ifelse(name=="Gyeongsangnam-do", "South Gyeongsang", name)) %>%
  mutate(name = ifelse(name=="Gyeongsangbuk-do", "North Gyeongsang", name)) %>%
  mutate(name = ifelse(name=="Gangwon-do", "Gangwon", name)) %>%
  mutate(name = ifelse(name=="Jeju-do", "Jeju", name)) %>%
  mutate(name = ifelse(name=="Chungcheongbuk-do", "North Chungcheong", name)) %>% 
  mutate(name = ifelse(name=="Chungcheongnam-do", "South Chungcheong", name)) %>% 
  mutate(name = ifelse(name=="Gyeonggi-do", "Gyeonggi", name))

# 3. 데이터 시각화 --------------------------------------------------------
## 3.1. 추세 --------------------------------------------------------------
gtrend_g <- ggplot(trend_df,aes(x=date, y=hits, color=keyword)) +
  geom_line() +
  scale_x_date(date_labels="%m-%d") +
  theme_minimal() +
  theme(legend.position="none", 
        plot.caption=element_text(hjust=0,size=8),
        plot.subtitle=element_text(face="italic"),
        axis.text=element_text(size=7.5))+
  labs(x="",y="",title="후보별 구글 추세",
       caption="\n 데이터출처: 구글, 구글 트렌드 도구(https://github.com/PMassicotte/gtrendsR)",
       subtitle="") +
  scale_colour_manual(name="",
                      values=c(문재인="#065ce8", 
                                  홍준표="#ff0000",
                                  안철수="#07f91f",
                                  유승민="#00faff",
                                  심상정="#f2ee09")) +
  geom_vline(xintercept=as.numeric(ymd("2017-04-28")), linetype=4, color="darkgrey", size=0.5) +
  annotate(geom="text",x=as.Date("2017-04-28"), y=3,label="2차",fontface="bold", size=3)

ggplotly(gtrend_g)  %>%
  layout()

# 4. 지역별 --------------------------------------------------------------

# kr_mapdata <- get_data_from_map(download_map_data("countries/kr/kr-all"))
## 4.1. 문재인 -----------------------------------------------------------
hcmap(map = "countries/kr/kr-all", data = regions_df %>% dplyr::filter(keyword=="문재인"),
      joinBy = "name", value = "hits", name = "문재인 지역별 구글 추세", download_map_data = TRUE,
      defaultColor = "#07f91f") %>% 
  hc_colorAxis(minColor = "#FFFFFF", maxColor = "#065ce8") %>% 
  hc_title(text = "문재인 지역별 구글 추세")

## 4.2. 홍준표 -----------------------------------------------------------
hcmap(map = "countries/kr/kr-all", data = regions_df %>% dplyr::filter(keyword=="홍준표"),
      joinBy = "name", value = "hits", name = "홍준표 지역별 구글 추세",
      download_map_data = TRUE) %>% 
  hc_colorAxis(minColor = "#FFFFFF", maxColor = "#ff0000") %>% 
  hc_title(text = "홍준표 지역별 구글 추세")

## 4.3. 안철수 -----------------------------------------------------------
hcmap(map = "countries/kr/kr-all", data = regions_df %>% dplyr::filter(keyword=="안철수"),
      joinBy = "name", value = "hits", name = "안철수 지역별 구글 추세",
      download_map_data = TRUE) %>% 
  hc_colorAxis(minColor = "#FFFFFF", maxColor = "#07f91f") %>% 
  hc_title(text = "안철수 지역별 구글 추세")

## 4.4. 유승민 -----------------------------------------------------------
hcmap(map = "countries/kr/kr-all", data = regions_df %>% dplyr::filter(keyword=="유승민"),
      joinBy = "name", value = "hits", name = "유승민 지역별 구글 추세",
      download_map_data = TRUE) %>% 
  hc_colorAxis(minColor = "#FFFFFF", maxColor = "#00faff") %>% 
  hc_title(text = "유승민 지역별 구글 추세")

## 4.5. 심상정 -----------------------------------------------------------
hcmap(map = "countries/kr/kr-all", data = regions_df %>% dplyr::filter(keyword=="심상정"),
      joinBy = "name", value = "hits", name = "심상정 지역별 구글 추세",
      download_map_data = TRUE) %>% 
  hc_colorAxis(minColor = "#FFFFFF", maxColor = "#f2ee09") %>% 
  hc_title(text = "심상정 지역별 구글 추세")

# 5. 표 -------------------------------------------------------

DT::datatable(trend_df %>% dplyr::select(후보=keyword, date, hits) %>% 
                spread(후보, hits)) %>% 
  DT::formatCurrency(c(2:6), "", interval=3, mark=',', digits=0)