圆环图主要用于表现一个总体中各个组成部分占总数的比例。比传统的饼图能够更好得变现比例数据,同时样式更加美观。
下面我们利用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