首页 > 解决方案 > Geom_bar_pattern 不将 x 轴类别视为不同

问题描述

取以下数据

df <- data.frame(replicate(2,sample(0:1,30,rep=TRUE)))
df <- reshape(data=df, varying=list(1:2), 
        direction="long", 
        times = names(df), 
        timevar="Type",
        v.names="Score")

像这样绘制:

plot <- ggbarplot(df, x = "Type", y = "Score", 
          color = "black", fill = "Type", add = "mean_ci")

我只想给 X1 添加条纹

plot +
         geom_bar_pattern(stat = "summary", fun = "mean", position="dodge",  color="black", width=1,pattern_angle = 45, pattern_density = 0.4,pattern_spacing = 0.025, pattern_key_scale_factor = 0.6) +
        scale_pattern_manual(values = c(X1 = "stripe", X2 = "none"))

然而,条纹被添加到两个 x 轴类别(scale_pattern_manual 不起作用?)

在此处输入图像描述

任何帮助深表感谢。

标签: rggplot2

解决方案


您可以使用stat_summary而不是使用来构建错误栏ggpubr::ggbarplot,然后您会得到:

library(ggplot2)
library(ggpattern)

df <- data.frame(replicate(2,sample(0:1,30,rep=TRUE)))
df <- reshape(data=df, varying=list(1:2), 
              direction="long", 
              times = names(df), 
              timevar="Type",
              v.names="Score")

ggplot(df, aes(x = Type, y = Score, pattern=Type,
          color = "black", fill = Type)) +
    geom_bar_pattern(stat = "summary", 
                     fun = "mean",
                     position="dodge",  
                     color="black", 
                     width=1, pattern_angle = 45, 
                     pattern_density = 0.4, pattern_spacing = 0.025, 
                     pattern_key_scale_factor = 0.6) +
    scale_pattern_manual(values = c("stripe", "none")) +
    stat_summary(fun.data=mean_cl_normal, geom="errorbar", col="black", width=.1)

reprex 包创建于 2021-05-19 (v2.0.0 )


推荐阅读