데이터 시각화
[R] 시계열 랭킹 차트 효율적으로 표현하기(2)
hyeppyy
2023. 6. 24. 14:42
서울 내 어느 동네의 아파트 가격이 가장 비쌀까?
이번에는 시계열 랭킹 차트를 표현해보고자 한다.
2022년도 데이터를 기준으로 가장 비싼 동네가 어디인지 그래프로 그려보자.
첫 번째는, 지난번과 동일하게 필요한 데이터를 불러온 후, 시군구/년도별 평균 거래 금액을 계산한다.
평균 거래 금액 기준으로 내림차순 하여, 랭킹 변수를 추가한다.
library(readr)
seoul_price <- read_csv("~/seoul_price.csv") %>% data.table()
seoul_price[,gubun:=ifelse(substr(deal_ymd,5,6) %in% c('01','02','03','04','05','06'),'상반기','하반기')]
max_price_tb <- seoul_price[,mean(거래금액),.(gugun,년,gubun)]
#랭킹변수 생성
setorder(max_price_tb,-V1)
max_price_tb[,ranking:=1:.N,.(년,gubun)]
데이터 결과를 확인한다.
# 라인 차트로 표현해보기
년도+분기별 라인차트로 표현해본다.
max_price_tb[년 > 2016] %>%
ggplot(aes(paste0(년,' ', gubun),reorder(paste0(ranking,'위'),-ranking))) +
geom_line(aes(group=gugun,color=gugun)) +
labs(x="년도",y="순위", color="구")
표현하고자 하는 구가 25개나 되기 때문에 한눈에 잘 보이지 않는다.
이럴 때는 전체가 아닌 일부 지역구를 선정해서 보여주는 게 좋다.
상위 7개구에 해당하는 강남구, 서초구, 용산구, 마포구, 성동구, 송파구, 동작구에 대해서 다시 그려본다.
max_price_tb <- seoul_price[gugun %in% c("강남구","서초구","용산구","마포구","성동구","송파구","동작구")][,mean(거래금액),.(gugun,년,gubun)]
setorder(max_price_tb,-V1)
max_price_tb[,ranking:=1:.N,.(년,gubun)]
max_price_tb[년 > 2016] %>%
ggplot(aes(paste0(년,' ', gubun),reorder(paste0(ranking,'위'),-ranking))) +
geom_line(aes(group=gugun,color=gugun),size=2) +
geom_point(aes(size=V1, color=gugun))+
labs(x="년도",y="", color="") +
geom_label(data=max_price_tb[년 %in% c(2017,2023) & gubun=="상반기"],aes(label=gugun,color=gugun) ,family = "NanumGothic") +
theme(
# panel (그래프의 배경)
panel.background = element_rect(fill = NA), #간격 없애기
panel.grid.major.x = element_line(color = "#EAEDF0"), #색 지정 및 보조선 그리기
# 축
axis.ticks = element_blank(), #ticks 삭제
#범례
legend.position = "none"
)
상위 7개구에 대해서만 표현하고, 맨 처음과 맨 뒤에 지역구 이름을 geom_label로 표현한다.
지역구별 평균 거래 가격으로 포인트의 사이즈를 표현하였다.
상위 7개구는 가격의 순위 변동이 크게 없고, 2022년 상반기에 용산구와 성동구의 가격이 증가했다가 다시 원래 수준으로 돌아온 것을 알 수 있다.