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

ggplot2 3.3.5版本下如何限制图例显示的key数量

ggplot2 3.3.5+版本限制图例key数量的解决方法

失效原因

ggplot2 3.3.5版本更新后调整了手动颜色标度的缺省值处理逻辑,未包含在breaks参数中的因子水平会被默认识别为缺失值,自动生成对应的灰色NA图例项,导致旧的仅设置breaks的方法失效。

解决方法

在原有scale_fill_manual()配置中添加na.translate = FALSE参数即可,该参数会禁止ggplot2为未匹配到breaks的因子水平生成额外的NA图例项,同时不会影响原有堆叠块的颜色渲染。

你也可以选择同步设置limits参数与breaks参数保持一致,该方案会直接限制标度识别的因子水平范围,适合不需要渲染未定义水平的场景。

修改后完整代码

library(tidyverse)

df_Test <- tibble(Year = rep(c("2019", "2020", "2021"), each = 3),
                  Size = c(20, 30, 25, 24, 20, 30, 35, 24, 20),
                  Color_Index = fct_relevel(as.factor(1 : 9))
)

Color_Scale <- c("#dce6f2", "#4f81bd", "#254061", "#4f81bd", "#254061", "#dce6f2", "#254061", "#dce6f2", "#4f81bd")

ggplot(data = df_Test, mapping = aes(x = Year, y = Size, fill = Color_Index, order = Color_Index)) +
  geom_bar(stat = "identity") +
  geom_text(mapping = aes(label = Size, group = Color_Index),
            position = position_stack(vjust = 0.5), size = 6, stat = "identity") +
  scale_fill_manual(values = Color_Scale,
                    breaks = c("1","2","3"),
                    labels = c("","",""),
                    na.translate = FALSE) + # 新增核心参数
  guides(fill = guide_legend(title = "Cohorts"))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:24:03