R语言绘制饼图时如何将分组名称标注在扇形内部以省略图例
解决方法
你可以通过调整标签生成逻辑、关闭图例映射两步实现需求,修改后的可运行代码如下:
library(tidyverse) library(ggrepel) dummy <- data.frame( Var1 = c("A", "B", "C", "D", "E"), Freq = c(548, 326, 292, 199, 138) ) dummy %>% mutate(perc = scales::percent(Freq/sum(Freq))) %>% # 拼接分组名和占比作为标注内容,换行显示更清晰 mutate(label_text = paste0(Var1, "\n", perc)) %>% arrange(desc(Var1)) %>% mutate(pos = cumsum(Freq) - Freq/2) %>% ggplot(aes(x = "", y = Freq, fill = factor(Var1))) + geom_bar(width = 1, stat = "identity", show.legend = FALSE) + coord_polar("y", start = 0) + # 直接将标注放在扇形中心,不需要额外偏移 geom_label(aes(x = 1, y = pos, label = label_text), size = 4, show.legend = FALSE) + # 全局关闭fill相关图例 guides(fill = "none") + # 可选:清空无关的坐标轴元素让图表更整洁 theme_void()
可选调整项
- 如果不需要标签的白色背景框,可以把
geom_label替换为geom_text,同时可添加color = "white"参数让文字和深色扇形的区分度更高 - 可以调整
size参数适配你的输出尺寸要求
内容的提问来源于stack exchange,提问作者Macromind101
相关产品推荐
相关产品推荐

