데이터 시각화

[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년 상반기에 용산구와 성동구의 가격이 증가했다가 다시 원래 수준으로 돌아온 것을 알 수 있다.