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

R中是否有更简便的方法标准化ggplot2分面饼图的高度?

ggplot2分面饼图统一尺寸的简化实现方案

方法1:dplyr分组自动计算占比

相比手动为每个分类写判断逻辑的写法,用group_by()可以自动对所有category分组计算内部占比,新增分类也不需要修改代码,还可以直接和绘图逻辑串成管道:

library(dplyr)
library(ggplot2)

df %>% 
  count(category, group) %>% 
  # 按category分组后sum(n)即为当前分类的总样本量
  group_by(category) %>% 
  mutate(proportion = n / sum(n)) %>% 
  ggplot(aes(x = "", y = proportion, fill = factor(group))) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y", start = 0) +
  facet_wrap(~category)

方法2:用ggplot内置参数实现自动标准化,无需提前计算占比

直接给geom_bar加上position = "fill"参数,ggplot会自动将每个分面下的y值标准化为0-1区间的占比,代码更短:

df %>% 
  count(category, group) %>% 
  ggplot(aes(x = "", y = n, fill = factor(group))) +
  # position="fill"自动完成堆叠占比标准化
  geom_bar(stat = "identity", width = 1, position = "fill") +
  coord_polar("y", start = 0) +
  facet_wrap(~category)

注:你原有代码中用到的Type字段大概率是category的笔误,运行前注意替换避免报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:24:04