ggplot2 coord_polar绘图添加名称、数值、占比三类标签方法
实现方法
你要的组合换行标签不需要依赖额外扩展包,直接提前拼接好带换行符的标签字符串,传入geom_text即可实现,具体步骤如下:
- 先预处理数据集,拼接符合要求的标签
library(ggplot2) # 拼接两行结构的标签:第一行为分类名称,第二行为 数值(占比%) usage.may$plot_label <- paste0( trimws(usage.may$Label), # 清除原Label字段首尾多余的空格 "\n", usage.may$Value, " (", usage.may$Percent, "%)" ) # 值为0的扇区清空标签,避免无效标签堆在图表中心 usage.may$plot_label[usage.may$Value == 0] <- ""
- 修改原绘图代码,替换标签映射即可
ggplot(usage.may, aes(x = Level, y = Percent, fill = Subcategory)) + geom_col( color = 'white', linewidth = 0.8, show.legend = FALSE ) + geom_text( aes(label = plot_label), size = 3, colour = "white", position = position_stack(vjust = 0.5), lineheight = 0.9 # 调整两行标签的行距,避免文字过散 ) + # 要做标准环形效果就加这行挖空中心,不需要可以删掉 xlim(c(0, 4)) + coord_polar('y') + theme_minimal()
注意事项
- 原代码开头的
gplot是拼写错误,正确函数名是ggplot - 如果小占比扇区的标签出现重叠,可以加过滤规则,比如把占比小于2%的扇区标签设为空,减少视觉杂乱
- 你数据里的
Level字段已经区分了内外环层级,position_stack会自动把标签对应到各自环的中心位置,不需要手动调整坐标
内容的提问来源于stack exchange,提问作者Lisa B
相关产品推荐
相关产品推荐

