(ggplot2) x/y 축 레이블 스케일(단위) 변경하기

그래프를 그리다보면, 가장 어려운 부분 중 하나는 데이터 값을 인식 가능한 속성이나 단위로 변환하는 것이다. scales 패키지는 ggplot2에서 스케일링 기능을 제공하며, 기본 나누기, 레이블, 변환 및 팔레트를 재정의할 수 있는 도구를 제공한다. 아래 코딩예시들은 Label numbers in decimal format 문서의 예시를 참고하였다.

ESPG:5179 지도참조체계를 사용하면 m 단위의 수치로 x/y 축이 표시된다.

ggplot() +
  geom_sf(data = sig, aes(fill = SIG_CD)) +
  scale_fill_viridis_d(begin = 0.3) +
  coord_sf(datum = st_crs(5179)) +
  theme_bw() +
  theme(legend.position = "none",
        axis.title = element_blank())

scales 패키지 설치를 해놔야 한다. 그리고나서 label_comma 함수를 이용해서 천단위로 바꿀 뿐만 아니라, 콤마까지 자동으로 넣어줄 수 있다.

library(scales)
ggplot() +
  geom_sf(data = sig, aes(fill = SIG_CD)) +
  scale_fill_viridis_d(begin = 0.3) +
  scale_x_continuous(labels = label_comma(scale = 1/1000)) +
  scale_y_continuous(labels = label_comma(scale = 1/1000)) +
  coord_sf(datum = st_crs(5179)) +
  theme_bw() +
  theme(legend.position = "none",
        axis.title = element_blank())

cut_si('m') 과 같이 정의하면, 숫자의 크기에 맞춰 km, Mm, Gm 로 단위로 자동 변경된다. 더 자세한 예시는 (ggplot2) scales 패키지 사용 예제 포스팅을 참고한다.

ggplot() +
  geom_sf(data = sig, aes(fill = SIG_CD)) +
  scale_fill_viridis_d(begin = 0.3) +
  scale_x_continuous(labels = label_number(scale_cut = cut_si('m'))) +
  scale_y_continuous(labels = label_number(scale_cut = cut_si('m'))) +
  coord_sf(datum = st_crs(5179)) +
  theme_bw() +
  theme(legend.position = "none",
        axis.title = element_blank())


더 보면 좋을 글들