가장 최근 1주일(4월 28 ~ 5월3일) 각 주요 대선후보별 구글 추세를 보는 다음과 같다.
# 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)