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

如何用ggplot绘制仅偶数序号柱带蓝色边框的堆叠柱状图

解决ggplot堆叠柱状图仅给偶数序号柱子加蓝色边框的问题

你当前的代码给所有柱子都加了蓝色边框,是因为第二个geom_bar的colour是全局设置,没有区分柱子的位置序号。要实现仅偶数序号(第2、4、6…个)柱子显示蓝色边框,可以按以下方式修改代码:

library(ggplot2)
test <- as.data.frame(cbind(a = c(1, 1, 2, 3), b = 1:4, c = as.character(1:4)))

ggplot(test) +
  geom_bar(aes(x = a, y = b, fill = c), stat = "identity") +
  geom_bar(
    aes(x = a, y = b, group = a,
        # 根据柱子的位置序号判断,偶数序号设为蓝色,否则设为NA(不显示边框)
        colour = ifelse(as.integer(factor(a)) %% 2 == 0, "blue", NA)),
    stat = "summary", fun = sum,
    fill = "transparent"
  ) +
  # 直接使用指定的颜色值,不进行额外映射
  scale_colour_identity()

关键修改说明:

  • as.integer(factor(a)):将x轴的分类值转换为对应的位置序号(比如第一个出现的x值序号为1,第二个为2,以此类推),这样就能准确判断哪些是偶数序号的柱子。
  • ifelse(..., "blue", NA):仅给偶数序号的柱子设置蓝色边框,其他柱子的边框颜色设为NA,不会显示。
  • scale_colour_identity():因为我们直接使用了颜色字符串("blue"),需要通过这个尺度告诉ggplot直接使用这些值,而不是自动映射到默认颜色 palette。

这样修改后,就只有第2、4、6…等偶数序号的柱子会显示蓝色边框,其他柱子无边框,符合你的期望效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 14:00:13