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

如何在ggplot分组堆叠条形图中修改颜色与填充图案

解决ggplot分组堆叠条形图同时设置颜色与填充图案的问题

要在分组堆叠条形图中同时实现自定义颜色和填充图案,核心是正确使用ggpattern包的geom_col_pattern,并同时映射fill和pattern到堆叠变量,以下是具体解决方法:

步骤1:安装并加载依赖包

首先确保安装ggpattern包(用于实现图案填充):

install.packages("ggpattern")
library(ggpattern)
library(ggplot2)

步骤2:修改绘图代码

对原代码进行调整,重点是在aes中添加pattern映射,用geom_col_pattern替代geom_bar,并分别设置颜色和图案的手动映射:

set.seed(687532)                     # 创建示例数据框
data <- data.frame(facet = rep(LETTERS[1:5], each = 6),
                   group = c("x", "y"),
                   stack = letters[1:3],
                   value = round(abs(rnorm(30)), 2))

ggplot(data,                         
       aes(x = group,
           y = value,
           fill = stack,  # 堆叠部分的颜色映射
           pattern = stack)) +  # 堆叠部分的图案映射
    geom_col_pattern(
        position = "stack",  # 保持堆叠设置,避免变回单组
        width = 0.6,
        pattern_fill = "black",  # 图案线条颜色
        pattern_density = 0.1,  # 图案密度
        pattern_spacing = 0.02  # 图案间距
    ) + 
    theme_classic() +
    theme(panel.border = element_rect(colour = NA, fill=NA, size=0),
          text = element_text(size = 8, family = "sans")) +
    scale_y_continuous(expand = c(0,0)) +
    labs(x = "", y = expression(paste("Relative Abundance(%)"))) + 
    facet_wrap(~facet, strip.position = "bottom", scales = "free_x") +
    theme(panel.background = element_blank(),
          panel.spacing = unit(0, "line"), 
          strip.background = element_blank(),
          strip.placement = "outside") +
    theme(plot.title.position = 'plot',
          plot.title = element_text(hjust = 0.5)) + 
    theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) +
    # 自定义堆叠部分的颜色
    scale_fill_manual(values = c("a" = "#FF9999", "b" = "#99CCFF", "c" = "#99FF99")) +
    # 自定义堆叠部分的图案
    scale_pattern_manual(values = c("a" = "stripe", "b" = "circle", "c" = "crosshatch"))

关键说明

  • 之前出现“变回单组”的问题,大概率是未在aes中同时映射fill和pattern到堆叠变量stack,或者position参数未设置为"stack"。
  • geom_col_pattern的pattern_density、pattern_spacing等参数可根据需求调整,优化图案显示效果。
  • scale_pattern_manual支持的图案类型包括stripe、circle、crosshatch、wave等,可自由搭配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 05:33:32