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
相关产品推荐
相关产品推荐

