R中的分组箱线图-我的错误在哪里?

R中的分组箱线图-我的错误在哪里?,r,ggplot2,boxplot,R,Ggplot2,Boxplot,我尝试使用aes(x=…,y=…,fill=…)来绘制箱线图。不知怎的,它不起作用了。应该是这样的: (第一张照片) 但加上红色的平均值和标准偏差 我有一个数据框,其中包含一个人的编号p(在调查中询问),两个问题的答案q1和q2(按1到4的比例)以及他们所属的组G。有人能帮我找到错误吗 library(mosaic) library(effects) library(openxlsx) library(corrgram) library(GGall

我尝试使用aes(x=…,y=…,fill=…)来绘制箱线图。不知怎的,它不起作用了。应该是这样的:

(第一张照片)

但加上红色的平均值和标准偏差

我有一个数据框,其中包含一个人的编号
p
(在调查中询问),两个问题的答案
q1
q2
(按1到4的比例)以及他们所属的组
G
。有人能帮我找到错误吗

    library(mosaic) 
    library(effects) 
    library(openxlsx) 
    library(corrgram) 
    library(GGally) 
    library(vcd) 
    library(corrplot) 
    library(ggpubr)
    
    library(dplyr) 
    library(tidyr) 
    library(ggplot2) 
    
    
    
    l1 = c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,3,3,3,4,5,2,3,3,3,3,3,3,4,4,5,5,5,4,3,3,2,2,1,1,2,2,3,3,3,3,4,4,4,3,3,4,4,4,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,4,4,4,4,3,3,2,2,2,2)
    l2 = c("N/A","N/A","N/A","N/A","N/A","N/A","N/A","N/A","N/A","N/A",2,2,2,2,2,3,3,3,4,4,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,3,3,3,2,2,2,2,2,2,3,3,3,2,2,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,3,3,3,4,4,5,5,5,5,5,5,5,5,4,4,4,4,4,3,3,3,3,2,2,2,1,1,1,1,1)
    l3 = c(1,2,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,2,1,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,1,1,1,1,2,2,2,2,2,1,1,1,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,1,1,1)
    
    df <- data.frame (p = c(1:20),
                      q1=l1[1:20],
                      q2=l2[1:20],
                      G=l3[1:20]
    )
    dfn<-df %>% replace_with_na_all(condition = ~.x == "N/A")
    dfn$q1<-as.numeric(dfn$q1)
    dfn$q2<-as.numeric(dfn$q2)
    dfn$G<-as.numeric(dfn$G)
                      
          
    
    #-----------------------------------------------------
    
    preparedataboxplot <- select(dfn,p,q1,q2,G) %>% gather(key='Question_num', value='Antwort', -c(p,G))
    preparedataboxplot <- preparedataboxplot %>% drop_na()
    preparedataboxplot$Antwort<-unlist(preparedataboxplot$Antwort)
    
preparedataboxplot$G[preparedataboxplot$G == 2] <- 'B'
preparedataboxplot$G[preparedataboxplot$G == 1] <- 'A'

    ggplot(preparedataboxplot,aes(x=factor(Question_num),y=Antwort,fill=G))+
      stat_boxplot()+
      geom_boxplot()+
stat_summary(fun=mean, geom="point", size=2,color="red")+
  stat_summary(
    fun.min = function(x) mean(x) - sd(x), 
    fun.max = function(x) mean(x) + sd(x))
库(马赛克)
图书馆(效果)
库(openxlsx)
图书馆(corrgram)
图书馆(GGALY)
图书馆(vcd)
图书馆(corrplot)
图书馆(ggpubr)
图书馆(dplyr)
图书馆(tidyr)
图书馆(GG2)
1.2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4,3,3,2,2,2,2)
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3,3,3,4,4,3,3,4,3,3,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 4,4,4,4,3,3,3,2,2,1,1,1,1,1)
1.1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2(2,2,2,2,1,1,1)

df多亏了各位对我问题的评论,我找到了一个有效的解决方案:

ggplot(preparedataboxplot,aes(x=factor(Question_num),y=Antwort,fill=G))+
  stat_boxplot(geom='errorbar',width=0.8)+
  geom_boxplot(width=0.8)+
  stat_summary(position=position_dodge(.9),fun=mean, geom="point",size=2,color="red")+
  stat_summary(
    fun.min = function(x) mean(x) - sd(x), 
    fun.max = function(x) mean(x) + sd(x), 
    geom = "errorbar",
    color = "red",position=position_dodge(.9),
    width = .3
  )

您必须设置位置参数。尝试将
position=position\u dodge(.75)
添加到统计摘要。有关添加文本标签的相关问题,请参阅。