범례 위치 설정

개요

이번 포스팅에서는 ggplot2를 사용하여 차트에서 범례의 위치를 다양하게 조정하는 방법을 소개합니다. 범례를 패널 안쪽, 패널 바깥의 오른쪽, 아래쪽 등 다양한 위치로 이동시킬 수 있으며, 이를 통해 차트의 가독성과 미적 요소를 동시에 향상시킬 수 있습니다. 이전에 혼합형 그래프 작성 글에서 만든 차트를 활용하겠습니다.

# 글꼴 설정
font_add("kopub", "C:/Users/.../AppData/Local/Microsoft/Windows/Fonts/Kopub dotum medium.ttf")

showtext_auto()
showtext_opts(dpi=300)

theme.size = 14

# 기본지도 그리기
base <- ggplot(data = data2) +
  geom_col(aes(x = 년도, y = `승객 수`, fill = "승객 수"), width = 0.6) +
  geom_line(aes(x = 년도, y = `전년 대비 승객 수 증감률` * coeff, color = "전년 대비 승객 수 증감률")) +
  scale_fill_manual(values = "gray40") +
  scale_color_manual(values = "gray70") +
  scale_x_continuous(n.breaks = 12) +
  scale_y_continuous(
    name = "승객 수(천명)",
    labels = scales::comma_format(),
    expand = expansion(mult=c(0, 0.3)),
    sec.axis = sec_axis(~./coeff, name = "전년 대비 승객 수 증감률(%)",
                        labels = scales::percent_format())
  ) +
  theme_bw(base_family="kopub", base_size=theme.size)

base

승객 수와 전년 대비 승객 수 증감률을 나타낸 그래프

패널 바깥의 오른쪽에 범례 배치하기

기본적으로 범례는 패널 바깥 오른쪽에 위치합니다. 범례의 시각적 품질을 개선하기 위해 아래 작업을 수행할 수 있습니다.

  • 범례 제목 제거: 차트의 간결함을 위해 범례 제목을 숨깁니다
  • 범례 아이템 높이 조정: 범례 아이템(legend keys)의 높이를 범례 텍스트와 동일하게 설정합니다
  • 범례 간 간격 조정: legend.spacing을 사용해 범례 요소 간의 간격을 줄입니다
base +
  theme(
    legend.title = element_blank(), # 범례 제목 없앰
    legend.key.height = unit(rel(0.8), "pt"), # 범례 key 높이를 범례 글자 크기와 일치
    legend.spacing = unit(3, "pt"), # 범례 간 간격 조정
  )

패널 바깥의 오른쪽에 범례를 배치한 그래프

패널 바깥 아래쪽에 범례 배치하기

범례를 패널 아래로 이동하려면 legend.position = "bottom"을 사용하면 됩니다. 추가적인 설정 없이도 범례가 아래쪽에 깔끔하게 정렬됩니다. 필요한 경우 위의 범례 설정을 함께 사용해 시각적 완성도를 높일 수 있습니다.

base +
  theme(
    legend.title = element_blank(), # 범례 제목 없앰
    legend.key.height = unit(rel(0.8), "pt"), # 범례 아이템 크기를 범례 글자 크기와 일치
    legend.spacing = unit(3, "pt"), # 범례 간 간격 조정
    legend.position = "bottom"
  )

패널 바깥의 아래쪽에 범례를 배치한 그래프

패널 안쪽 왼편 위에 범례 배치하기

범례를 패널 내부로 이동하려면 legend.position을 “inside”로 설정하고, legend.justification으로 상대적인 위치를 지정해야 합니다.

base +
  theme(
    legend.title = element_blank(), # 범례 제목 없앰
    legend.key.height = unit(rel(0.8), "pt"), # 범례 key 높이를 범례 글자 크기와 일치
    legend.spacing = unit(3, "pt"), # 범례 간 간격 조정
    legend.position = "inside",
    legend.justification = c(0.05, 0.95),
  )

패널 안쪽 왼편 위에 범례를 배치한 그래프

범례 배경색 없애기

범례 배경색 기본은 흰색으로 지정되어 있습니다. 배경색을 제거하고 투명하게 만들기 위해, legend.background = element_rect(fill=NA)를 추가합니다. 이렇게 하면, 차트의 배경과 범례가 자연스럽게 어우러질 수 있습니다.

base +
  theme(
    legend.title = element_blank(), # 범례 제목 없앰
    legend.key.height = unit(rel(0.8), "pt"), # 범례 key 높이를 범례 글자 크기와 일치
    legend.spacing = unit(3, "pt"), # 범례 간 간격 조정
    legend.position = "inside",
    legend.justification = c(0.05, 0.95),
    legend.background = element_rect(fill=NA),
  )

범례 배경색을 없앤 그래프

이번 글을 통해 기본적인 범례 위치 설정과 함께, 범례 아이템의 높이 조정, 범례 간 간격 조절, 배경색 변경 등 다양한 세부 설정 방법을 익히셨을 겁니다. 차트를 제작하며 시각적으로 균형 잡힌 그래프를 만들어 보세요. 추가적인 스타일 설정이 궁금하다면, theme 함수 이해하기 포스팅을 참고해 보세요!