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

如何让ggplot半圆饼图沿X轴放置并添加扇区百分比标签

解决半圆饼图的两个问题

1. 让图表沿X轴铺满绘图区域(消除悬浮)

原代码里geom_rect的xmin=1, xmax=2会生成环形半圆,再加上xlim(c(0,2))和ylim(c(0,2))的设置,导致图表悬浮在中间。调整方案:

  • 将geom_rect的xmin设为0,xmax设为1,生成实心半圆
  • 把xlim改为c(0,1),ylim改为c(0,1),匹配数据的实际范围

2. 在扇区内添加百分比标签

先计算每个扇区的中心角度位置(即(ymin + ymax)/2),再用geom_text在极坐标下添加标签:

  • 新增计算:y_mid <- (ymin + ymax)/2,得到每个扇区的中心位置
  • 使用geom_text,设置x为0.5(半圆半径的中间位置),y为y_mid,label为格式化后的百分比文本

修改后的完整代码

# 计算边界和扇区中心位置
ymax <- cumsum(data_extract$fract)
ymin <- c(0, head(ymax, n= -1))
y_mid <- (ymin + ymax)/2

ggplot(data_extract, aes(fill = Option, ymax = ymax, ymin = ymin, xmax = 1, xmin = 0)) + 
  geom_rect() + 
  # 添加百分比标签
  geom_text(aes(x = 0.5, y = y_mid, label = paste0(Perc, "%")), color = "white", fontface = "bold") +
  coord_polar(theta = "y", start = -pi/2) + 
  xlim(c(0, 1)) + ylim(c(0, 1)) +
  theme_classic() +
  theme( legend.position = "bottom", 
         axis.title = element_blank(), axis.text = element_blank(),
         axis.ticks = element_blank(), line = element_blank()) +
  labs(fill = "Key")

关键修改说明

  • 消除悬浮:把矩形的x范围从[1,2]调整为[0,1],同时匹配xlim/ylim的范围,让半圆从绘图区左边缘开始,完全贴合X轴
  • 添加标签:通过y_mid定位每个扇区的中心,用geom_text在极坐标下放置标签,白色加粗文字能更好地和扇区颜色区分

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 03:42:37