圆环图主要用于表现一个总体中各个组成部分占总数的比例。比传统的饼图能够更好得变现比例数据,同时样式更加美观。

下面我们利用R演示如何绘制一个圆环图:


# 加载包
library(ggplot2)

# 演示数据
data <- data.frame(category = c("A", "B", "C"),
                   count = c(10, 50, 40))

# 计算每个组分所占百分比
data$fraction <- data$count / sum(data$count)

# 计算上弧结束位置
data$ymax <- cumsum(data$fraction)

# 计算下弧起始位置
data$ymin <- c(0, head(data$ymax, n = -1))

# 计算标签位置
data$labelPosition <- (data$ymax + data$ymin) / 2

# 生成标签
data$label <- paste0(data$category, "\n value: ", data$count)

# 绘图
ggplot(data, aes(
    ymax = ymax,        # 控制圈圈图弧长度
    ymin = ymin,
    xmax = 5,           # 控制圈圈图高度
    xmin = 3.5,
    fill = category
)) +
    geom_rect() +
    geom_text(x = 2,
              aes(y = labelPosition, label = label, color = category),
              size = 6) + # x控制标签位置(内/外)
    scale_fill_brewer(palette = 2) +
    scale_color_brewer(palette = 2) +
    coord_polar(theta = "y") +
    xlim(c(-1, 5)) +
    theme_void() +
    theme(legend.position = "right")

如上就可以绘制一个美观的圆环图了。

参考资料:

1.https://www.r-graph-gallery.com/128-ring-or-donut-plot.html