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

ggplot2图案填充柱状图 合并颜色与图案为单一统一图例

ggpattern填充色+图案统一合并图例实现方法

核心原理

ggplot2会自动将名称、标签、排序规则完全一致的同分组美学图例合并,之前出现独立双图例、或是图例缺图案的问题,本质是两个标度的图例配置没有对齐,或是错误关闭了其中一个美学的图例引导。

操作步骤

  • 确保geom_bar_pattern()里fill和pattern_type两个美学都映射到同一个分组字段:即你的收入来源列。
  • 给scale_fill_manual()和scale_pattern_type_discrete()设置完全相同的图例标题、分类顺序、分类标签,两个标度的values参数按相同的分类顺序传入自定义颜色、自定义图案列表。
  • 不要给任意一个标度设置guide = 'none',两个标度统一使用适配图案展示的图例引导函数,强制图形输出合并后的单图例。

可直接套用的代码模板

library(ggplot2)
library(ggpattern)

# 1. 先定义统一的分类规则,保证颜色、图案、标签、排序完全对应
income_category <- c("项1","项2", "...") # 替换为你实际的13项收入构成名称,顺序固定
custom_fill <- c("#色值1","#色值2", "...") # 对应顺序的自定义填充色
custom_pattern <- c("stripe","crosshatch", "...") # 对应顺序的magick模式支持的填充图案

# 2. 绘图
ggplot(你的数据集, aes(x = 国家维度, y = 收入数值, 
                       fill = 收入来源列, pattern_type = 收入来源列)) +
  geom_bar_pattern(
    stat = "identity",
    position = "stack",
    pattern = "magick", # 保留你原有的magick渲染模式
    pattern_color = NA, # 按需调整图案描边色,设为NA可去掉描边
    pattern_density = 0.3 # 按需调整图案疏密
  ) +
  scale_fill_manual(
    name = "收入构成", # 两个标度的图例名必须完全一致
    values = custom_fill,
    breaks = income_category,
    labels = income_category,
    guide = guide_legend_pattern() # 用ggpattern专属图例引导
  ) +
  scale_pattern_type_discrete(
    name = "收入构成", # 和fill的图例名完全一致
    values = custom_pattern,
    breaks = income_category,
    labels = income_category,
    guide = guide_legend_pattern()
  ) +
  # 兜底统一图例配置,避免版本兼容问题
  guides(
    fill = guide_legend_pattern(title = "收入构成", ncol = 2), # 13项设为2列显示更美观
    pattern_type = guide_legend_pattern(title = "收入构成", ncol = 2)
  )

常见问题排查

  • 如果图例里图案和颜色错配:检查两个标度的breaks顺序是否完全一致,必须保证颜色、图案和分类项的顺序一一对应。
  • 如果还是出现双图例:检查两个标度的name参数是否完全相同,有没有多余的空格、大小写差异。
  • 如果旧版本ggpattern找不到guide_legend_pattern()函数:直接替换成原生guide_legend()即可,只要标度配置对齐,一样可以实现合并,只是图案渲染效果略差,升级ggpattern到最新版即可解决。
  • 如果图例里图案显示太密/太疏:在guide_legend_pattern()里加override.aes = list(pattern_density = 0.2, pattern_scale = 0.8)参数,单独调整图例里的图案显示效果,不影响主图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:09:10