R 패키지중에 ggbump
라고, 일반적인 선그래프와는 달리 랭킹간 변화추이를 보여주기 좋은 패키지가 있다. 아래 그림처럼 부드러운 곡선으로 라인으로 이어져 있어서 색다른 그래프를 만들 수 있다. tidytuesday
데이터를 활용해서 한번 그려본 차트이며, 자세한 설명과 구현방법은 github 페이지를 참고하시기 바란다.
그래프 데이터 만들기
데이터구조는 여타 데이터와 다를거 없다. x축이 될 year 는 년도를 의미하며, ord 는 각 tag 의 랭킹을 의미한다. 그래서 각 tags 별로 2017~2021년까지 5개년 데이터가 필요하다보니, 4개 tags x 5개년 = 20 row 의 데이터가 필요하다.
# A tibble: 20 × 3
year ord tags
<dbl> <int> <chr>
1 2017 1 TECH
2 2017 2 PRODUCTIVITY
3 2017 3 IPHONE
4 2017 4 DEVELOPER TOOLS
5 2018 1 TECH
6 2018 2 PRODUCTIVITY
7 2018 4 IPHONE
8 2018 5 DEVELOPER TOOLS
9 2019 1 TECH
10 2019 2 PRODUCTIVITY
11 2019 3 IPHONE
12 2019 5 DEVELOPER TOOLS
13 2020 1 PRODUCTIVITY
14 2020 2 TECH
15 2020 3 IPHONE
16 2020 4 DEVELOPER TOOLS
17 2021 1 PRODUCTIVITY
18 2021 2 TECH
19 2021 3 DEVELOPER TOOLS
20 2021 4 IPHONE
geom_bump 를 이용한 그래프 그리기
우선 라인그래프를 그려본다. 그런데, 랭킹이란게 1이 숫자는 작아도 가장 높은 곳에 보여야 하는데, y 축에서 1의 값이 가장 낮다보니 뒤집어야(?) 한다.
ggplot(data = tb6, aes(year, ord, colour = factor(tags,v_ord))) +
geom_line(size = 1)
y축을 뒤집으려면, scale_y_reverse
함수를 사용하면 된다. 아래 그림을 보면 아까 그림과 달리 y축에 1이 가장 높은곳에 있는 걸 볼 수 있다.
ggplot(data = tb6, aes(year, ord, colour = factor(tags,v_ord))) +
geom_line(size = 1) +
scale_y_reverse()
선그래프로도 랭킹의 변화는 느껴지긴하나, geom_bump
를 사용해본다. 아까 만들었던 선그래프와 느낌이 어떤지 비교해본다.
ggplot(data = tb6, aes(year, ord, colour = factor(tags,v_ord))) +
geom_bump(size = 1) +
geom_point(size = 3) +
scale_y_reverse()
선그래프 위에 점(point)를 찍었었는데, 점말고 글씨로 바꿔본다. geom_label
함수를 쓰면 자동으로 네모난 테두리가 생기는데, 옵션을 사용하면 모양/크기/색상 등 다르게 셋팅할 수도 있다.
ggplot(data = tb6, aes(year, ord, colour = factor(tags,v_ord))) +
geom_bump(size = 1) +
geom_label(aes(label = ord), size = 5) +
scale_y_reverse()
x축 혹은 y축의 텍스트를 아래가 아닌 위(top)로, 왼쪽이 아닌 오른쪽(right)로 바꾸는 작업을 하면 어느정도 끝이 난다.
ggplot(data = tb6, aes(year, ord, colour = factor(tags,v_ord))) +
geom_bump(size = 1) +
geom_label(aes(label = ord), size = 7) +
scale_y_reverse(position = "right") +
scale_x_continuous(position = "top")
마지막으로 배경색, 폰트, 위치조정 등을 하고나면 아래와 같은 그래프를 만들 수 있다.