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

如何按条件修改ggplot中geom_text与geom_label的颜色

解决ggplot中geom_text和geom_label的条件颜色设置问题

要实现你需要的标签颜色效果,只需在geom_text和geom_label的美学映射中添加颜色的条件规则,具体修改如下:

修改后的完整绘图代码

data %>% 
  left_join(df_2) %>% 
  ggplot(aes(x = Factor, y = Score, fill = Year)) +
  geom_col(position='dodge') +
  # 给Score标签按年份设置颜色
  geom_text(aes(label=Score, color = Year), 
            position=position_dodge(width = 0.9), 
            vjust=-0.40) +
  # 给差值标签按正负设置颜色
  geom_label(aes(y = 100, label = ifelse(Year == 2021, gap, NA_character_),
                 color = ifelse(gap < 0, "red", "green")), 
             na.rm = TRUE, fill = "white") + # 可选:设置label背景为白色避免遮挡
  scale_y_continuous(limits = c(0,105)) +
  # 指定年份与差值对应的标签颜色
  scale_color_manual(values = c("2020" = "grey", "2021" = "blue",
                                "red" = "red", "green" = "green")) +
  theme_minimal()

关键改动说明

  1. geom_text的年份颜色控制

    • 在geom_text的aes中新增color = Year,将标签颜色与年份变量绑定
    • 通过scale_color_manual手动指定2020年标签为grey,2021年为blue
  2. geom_label的差值颜色控制

    • 在geom_label的aes中新增color = ifelse(gap < 0, "red", "green"),根据差值正负直接映射对应颜色
    • 在scale_color_manual中补充red和green的颜色映射,确保规则生效
    • 可选添加fill = "white"让标签背景不遮挡下方柱状图,提升整体可读性

修改后即可实现需求:2021年的Score标签为蓝色、2020年为灰色,差值负数显示红色、正数显示绿色。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:45:49