도넛차트를 그리기 위해 제공되는 ggplot2
함수는 사실상 없다. 약간의 편법같이 느껴질 수 있는데, 누적막대그래프를 그려놓고 coord_polar
함수를 사용하여 x축 혹은 y축 기준으로 구부려 만든다고 생각하면 편하다. 아래 그래프는 22대 총선 투표율을 간단하게 도넛차트로 만든 예시이다.
도넛차트 그리기
도넛차트를 그리기 위해서, tidyverse
패키지를 불러온다. 그 안에 ggplot2
패키지가 포함되어 있다. 데이터는 4가지 종류의 값을 샘플로 만들었다.
library(tidyverse)
data <- data.frame(
Category = c("Category 1", "Category 2", "Category 3", "Category 4"),
Value = c(20, 35, 30, 25)
)
간단하게 값들을 하나의 Bar 로 쌓아 올려본다. 올릴때 position_fill
를 사용해야 100% 기준의 누적막대그래프가 나온다.
ggplot(data) +
geom_col(aes(x = 1, y = Value, fill = Category),
position = position_fill())
coord_polar 를 사용하여 y축 기준으로 구부려 원그래프를 우선 만든다.
ggplot(data) +
geom_col(aes(x = 1, y = Value, fill = Category),
position = position_fill()) +
coord_polar(theta = "y")
도넛차트를 만드려면, 안에 공간이 있어야 하는데, x축의 범위를 지정하면 완성이다.
ggplot(data) +
geom_col(aes(x = 1, y = Value, fill = Category),
position = position_fill()) +
coord_polar(theta = "y") +
scale_x_continuous(limits = c(-3, 1.5))
0.25, 0.50, 0.75, 1.00
이런 수치보다 퍼센트로 바꿔주는게 좋을거 같다. scales
패키지에 있는 label_percent
함수를 사용하면 쉽게 변환할 수 있다.
ggplot(data) +
geom_col(aes(x = 1, y = Value, fill = Category),
position = position_fill()) +
coord_polar(theta = "y") +
scale_x_continuous(limits = c(-3, 1.5)) +
scale_y_continuous(breaks = c(0.25, 0.5, 0.75, 1),
labels = scales::label_percent())