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

如何在ggplot2饼图中隐藏阈值以下数值且保留对应图例

ggplot2饼图:隐藏低数量类别但保留图例

要实现数量低于250的类别不在饼图中显示,但图例保留所有类别的需求,你可以通过预处理数据将低数量值设为NA的方式实现,具体步骤和修改后的代码如下:

核心思路

  • 预处理数据:把Quantities小于250的数值替换为NA,这样geom_col不会绘制这些类别,但Families的分类信息依然存在,图例会自动保留所有类别。
  • 过滤文本标签:避免NA值对应的标签出现在图中,仅显示有效类别的数量标签。

修改后的完整代码

library(ggplot2)
library(dplyr)
library(ggrepel)

# 示例数据
Family_Quantities <- data.frame(
  Families = c("Pomacentridae", "Gobiidae", "Labridae", "Labrisomidae", "Zanclidae"),
  Quantities = c(19056, 8000, 7990, 3, 277)
)

# 预处理数据:将低于250的数量设为NA
Family_Quantities_processed <- Family_Quantities %>%
  mutate(Quantities = ifelse(Quantities < 250, NA, Quantities))

# 绘制饼图
plot18 <- ggplot(data= Family_Quantities_processed, aes(x = "", y = Quantities, fill = Families)) +
  geom_col(color = "black") +
  # 仅显示非NA的数量标签
  geom_text_repel(aes(label = Quantities),
                  data = ~filter(.x, !is.na(Quantities)),
                  position = position_stack(vjust = 0.5)) +
  coord_polar(theta = "y") +
  theme_void()

plot18

关键细节说明

  1. 数据预处理:mutate(Quantities = ifelse(Quantities < 250, NA, Quantities)) 把低数量值转为NA,既不影响Families的分类,又能让geom_col跳过这些行的绘制。
  2. 文本标签过滤:data = ~filter(.x, !is.na(Quantities)) 确保只有有效数量的标签会被添加到饼图上,避免出现空白或NA标签。
  3. 图例保留:因为fill映射的是完整的Families分类(即使对应数量为NA),ggplot2会自动在图例中保留所有类别,包括那些被隐藏的低数量家族。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:42:16