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

如何在ggplot2中为指定分组条形图添加同色条纹?

解决ggplot2条形图条纹不显示的问题

你的代码无法显示条纹,核心原因是原生ggplot2的geom_bar不支持pattern参数,需要借助ggpattern包来实现填充图案效果。以下是修复后的完整代码:

# 安装并加载ggpattern包(首次运行需要安装)
# install.packages("ggpattern")
library(ggpattern)
library(ggplot2)

# 数据整理优化:新增站点分组,让颜色映射更清晰
sites <- c("Mt. Grace", "Mt. Grace Hardwood", "White's Pond", "White's Pond Hardwood", "TriMountain", "TriMountain Hardwood")
nitr_rates <- c(-0.90855, -0.7161, -0.46017, -0.30943, -0.21913, 0.2995)
# 新增主站点分组,用于颜色映射
site_group <- c("Mt. Grace", "Mt. Grace", "White's Pond", "White's Pond", "TriMountain", "TriMountain")
striped_sites <- c("Mt. Grace Hardwood", "White's Pond Hardwood", "TriMountain Hardwood")
# 将Stripe列的NA替换为"none",避免pattern映射异常
Stripe <- ifelse(sites %in% striped_sites, "stripe", "none")
Nitri_data <- data.frame(sites, nitr_rates, site_group, Stripe)
site_order <- c("Mt. Grace", "Mt. Grace Hardwood", "White's Pond", "White's Pond Hardwood", "TriMountain", "TriMountain Hardwood")

# 绘图代码
ggplot(Nitri_data, aes(x = factor(sites, levels = site_order), y = nitr_rates)) +
  # 用geom_bar_pattern替换geom_bar,支持pattern参数
  geom_bar_pattern(
    stat = "identity", 
    color = "black", 
    alpha = 0.7,
    aes(fill = site_group, pattern = Stripe),
    # 调整条纹的粗细、密度等样式
    pattern_color = "black",
    pattern_fill = "black",
    pattern_density = 0.1,
    pattern_spacing = 0.02
  ) +
  # 设置填充颜色
  scale_fill_manual(values = c("Mt. Grace" = "#5BA300", "White's Pond" = "#0073E6", "TriMountain" = "#B51963")) +
  # 设置图案:仅Hardwood站点显示条纹,其余无图案
  scale_pattern_manual(values = c("stripe" = "stripe", "none" = "none")) +
  xlab("Site") +
  ylab("mg N/g dry wt. soil/28 days") +
  ggtitle("Net Nitrification") +
  theme_minimal() +
  theme(legend.position = "bottom")

关键改动说明:

  • 引入ggpattern包:这是实现ggplot2填充图案的核心工具,提供了支持pattern参数的几何对象
  • 替换geom_bar为geom_bar_pattern:该函数原生支持图案填充
  • 优化数据结构:新增site_group列,让颜色映射逻辑更清晰,避免直接用颜色值作为映射变量
  • 修正Stripe列:将NA替换为"none",确保所有观测都有明确的pattern映射值
  • 调整图案样式参数:通过pattern_color、pattern_density等参数可以自定义条纹的颜色、密度和间距

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 11:03:21