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

在ggplot2中为柱状图添加Speech_VP额外填充变量的实现方法

解决方案:给指定柱状图添加图案区分并优化图例

示例数据集构造

先模拟符合你需求的数据集,方便直接测试代码:

library(tidyverse)
library(ggpattern)

# 构造数据
set.seed(123)
data <- tibble(
  Congruency = rep(c("Congruent", "Incongruent"), each=6),
  Event = rep(c("oration", "interview", "speech"), 4),
  Speech_VP = c("CH", "N", "N", "N", "N", "N", "CH", "N", "N", "N", "N", "N"),
  n = sample(10:30, 12, replace=T)
)

优化后的ggpattern绘图代码

针对你遇到的适配问题,调整参数后可实现需求:

ggplot(data, aes(x=Event, y=n, fill=Congruency)) +
  # 堆叠柱状图,精准控制图案显示
  geom_col_pattern(
    position="stack",
    pattern_fill="black",
    pattern_angle=45,
    pattern_density=0.1,
    pattern_spacing=0.05,
    # 仅oration事件的CH显示斜线,其余为纯色
    pattern=ifelse(data$Event=="oration" & data$Speech_VP=="CH", "stripe", "none")
  ) +
  # 自定义图案图例
  scale_pattern_manual(
    values = c("stripe"="stripe", "none"="none"),
    labels = c("CH (带斜线)", "N (纯色)"),
    name = "Speech_VP类型"
  ) +
  scale_fill_brewer(palette="Set2", name="一致性类型") +
  theme_minimal() +
  labs(x="事件类型", y="数量")

关键调整说明

  • 用ifelse精准触发图案:仅目标柱子显示斜线,避免全局应用图案导致的适配问题
  • 调整pattern_density和pattern_spacing:如果之前图案过密或错位,修改这两个参数可优化显示效果
  • 拆分图例:将图案和颜色图例分开,让读者清晰区分两类信息

备选方案(无需ggpattern)

如果ggpattern仍有兼容问题,可通过图层叠加模拟斜线:

# 绘制基础堆叠柱状图
p <- ggplot(data, aes(x=Event, y=n, fill=Congruency)) +
  geom_col(position="stack") +
  scale_fill_brewer(palette="Set2") +
  theme_minimal()

# 给目标柱子添加斜线纹理
p + geom_text(
  data = filter(data, Event=="oration" & Speech_VP=="CH"),
  aes(label=strrep("/", 20)),
  color="black", size=3, angle=45,
  position=position_stack(vjust=0.5)
) +
  # 手动添加自定义图例
  annotate("rect", x=3.2, y=25, width=0.1, height=3, fill="#66C2A5") +
  annotate("text", x=3.35, y=26.5, label="CH (带斜线)") +
  annotate("rect", x=3.2, y=21, width=0.1, height=3, fill="#FC8D62") +
  annotate("text", x=3.35, y=22.5, label="N (纯色)")

这个方案无需额外依赖包,适合对ggpattern兼容性有顾虑的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 17:42:50