티스토리 뷰

반응형

막대그래프를 그릴때, 막대위에 숫자표기를 하고 싶다면, 쉽게 설정이 가능하다. 그리고 왼편의 ggplot 에서 흔히 보는 막대그래프 스타일을 오른편의 그래프로 디자인까지 진행해본다.

 

임의의 데이터 셋을 만든다. sample 을 이용해서 랜덤으로 값을 추출한다.

tb = tibble(x = 1:5, 
            y = sample(200:240, 5), 
            l = c("서울", "경기", "강원", "충청", "제주"))

 

아래 2줄만으로도 막대그래프를 손쉽게 만들 수 있다.

ggplot(tb, aes(x, y)) + 
  geom_col(width = 0.6)

반응형

막대그래프 위에 실제 y 값을 표시하려면, 추가적인 설정이 필요하다. geom_text 를 이용해서 텍스트를 추가하면 되고, vjust 설정으로 위아래로 위치를 살짝씩 조정해본다. 그리고 scale_y_continuous 내의 limits 를 설정해야 하는데, 최대막대그래프의 x 1.1배 혹은 1.2 배를 해야 텍스트가 일부 잘리지 않는다. (* 1.2 를 빼고 실행해보면 안다.)

ggplot(tb, aes(x, y)) + 
  geom_col(width = 0.6) + 
  geom_text(aes(x = x, y = y, label = y), vjust = -0.7, family = "BMDoHyeon-OTF") + 
  scale_y_continuous(expand = expansion(mult = 0), limits = c(0, tb$y * 1.2))

 

이제 스타일을 넣어본다. 색상도 넣고, 불필요한 요소들을 제외시켜 단순화 하고나면 아래와 같은 그래프를 얻을 수 있다. 폰트는 배달의 민족 폰트를 가져와 사용해봤다. 한글 폰트를 다양하게 사용해보니 더 그래프의 수치가 돋보이는 것처럼 보여 만족스럽다.

ggplot(tb, aes(x, y)) + 
  geom_col(width = 0.6, fill = "#fec44f") +
  geom_text(aes(x = x, y = y, label = y), vjust = -0.7, family = "BMDoHyeon-OTF") + 
  scale_y_continuous(expand = expansion(mult = 0), limits = c(0, tb$y * 1.2)) +
  scale_x_continuous(breaks = tb$x, labels = tb$l) +
  theme_void(base_family = "BMDoHyeon-OTF") +
  theme(
    axis.line.x = element_line(size = 1.2), 
    axis.text.x = element_text(margin = margin(.3,0,0,0, "cm"), size = 13),
    plot.margin = margin(.3,1,.7,1, "cm"),
    legend.position = "none")
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함