You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ggplot2绘制饼图时标签重叠,请问问题出在哪里?

饼图标签重叠的原因及修复方案

核心原因

  • x轴位置统一导致堆叠:你设置x=""后,所有数据都被映射到同一个x坐标上,geom_text默认在每个条形的中心(也就是饼图的圆心区域)绘制标签,自然会全部重叠。
  • 未计算标签的扇形定位:饼图的标签需要对应每个扇区的中心位置,你的代码没有基于Phase的比例计算标签的偏移量,直接把所有标签放在同一位置。
  • 标签内容逻辑有误:paste0(Phase, "%")里的Phase如果是原始计数而非百分比,不仅显示内容不符合饼图标签的常规逻辑,也没有配合位置调整来避免重叠。

修复示例代码

先整理数据计算占比,再通过位置调整让标签对应到扇区中心:

library(tidyverse)

# 整理数据:统计各Phase的数量并计算百分比
earlyCiliated_tbl <- as_tibble(earlyCiliated[[]]) %>%
  count(Phase) %>%
  mutate(percent = paste0(round(n/sum(n)*100, 1), "%"))

# 绘制饼图
ggplot(earlyCiliated_tbl, aes(x = "", y = n, fill = Phase)) +
  geom_col(width = 1) +
  coord_polar("y", start = 0) +
  geom_text(aes(label = percent), position = position_stack(vjust = 0.5)) +
  theme_void() # 清理冗余的坐标轴元素

关键调整说明

  • 用count(Phase)统计每个类别的数量,再计算百分比,确保标签内容准确。
  • position_stack(vjust = 0.5)让标签自动对齐到对应扇区的中心位置,彻底解决重叠问题。
  • theme_void()可以移除饼图周围的多余坐标轴、网格线,让图表更简洁。

内容的提问来源于stack exchange,提问作者user12973562

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 07:15:51