如何在ggplot的分面饼图上正确放置标签?
分面饼图标签错位问题解决方案
问题根源
- 你编写的
geom_text层没有配置位置调整参数,默认直接以pct的原始值作为y轴坐标,这个坐标对应每个扇形的下边缘,自然无法居中显示在扇形内部 - 没有按tag分组做堆叠位置计算,不同分组的标签会出现重叠、偏移甚至超出饼图范围的问题
修正后可运行代码
ggplot(data, aes(x = factor(1), y = pct, fill = tag)) + geom_bar(stat = "identity", width = 1) + coord_polar("y", start=0) + theme_void()+ # 移除背景、网格、数值标签 facet_wrap(~team)+ # 新增position_stack参数,vjust=0.5让标签垂直居中在对应扇形内部 geom_text(aes(label = sprintf("%1.2f%%", 100*pct)), position = position_stack(vjust = 0.5))
可选优化
如果存在文本过长溢出的情况,可以调整size参数缩小文本字号:
geom_text(aes(label = sprintf("%1.2f%%", 100*pct)), position = position_stack(vjust = 0.5), size = 3)
内容的提问来源于stack exchange,提问作者John Thomas
相关产品推荐
相关产品推荐

