как изменить порядок групп ячеек, отображаемых в geom_boxplot(), используя ggplot2?

#r #ggplot2 #boxplot

#r #ggplot2 #boxplot

Вопрос:

я создал boxplot с помощью ggplot () и geom_boxplot () для отображения результатов двустороннего anova (2×2 между объектами, оба фактора категориальны), но у меня возникли проблемы с переупорядочением групп ячеек в соответствии с моим предпочтительным отображением aes ().

вот что я сделал до сих пор:

 # libraries
library(tidyverse)
library(Rmisc)

# read data
DS = read.csv("....csv")
head(DS)
unique(DS$Binge)  
unique(DS$Gender)

# stripchart w box plots
df$f1f2 <- interaction(df$f1, df$f2)

ggplot(DS, aes(x=f1, y=ACC_L, fill=f2))  

    geom_boxplot(position=position_dodge(0.7), width=.6, color='black',
                 outlier.alpha=FALSE)  
  
    geom_point(position=position_jitterdodge(.2),size=1)  

    stat_summary(fun="mean",geom = "point", size=5, 
               shape=18, position=position_dodge(0.7), color='lightcyan1')  

    theme_minimal()  
  
# Change the axis labels

#    ylab("FA")  
    xlab("Condition")  

# Make axis labels and tick labels larger
# and change to black

    theme( axis.title = element_text(size = 12, color = 'black'), 
       axis.text = element_text(size = 10, color = 'black')) 
 

boxplot

Я хочу изменить порядок групп ячеек так, чтобы LD-male, LD-female, BD-male, BD-female отображались в этом порядке.

Заранее спасибо,

Ответ №1:

если f1 представляет ваши группы ячеек, то вы можете изменить первую строку вашей ggplot команды следующим образом:

 ggplot(DS, aes(x=factor(f1,levels=c('LD-male','LD-female','BD-male','BD-female')), y=ACC_L, fill=f2))  
 

или в любом другом порядке, который вы предпочитаете.

Ответ №2:

Большое спасибо за предложение. На самом деле я опубликовал неверный исходный код.

Несмотря на это, я обновил его этим, и это сработало!

 # stripchart w box plots
#specify order of cell groups to be mapped in ggplot(); aes()
f1<-factor(DS$Binge,levels=c("LD","BD"))
f2<-factor(DS$Gender,levels=c("Male","Female"))

# ggplot () start
ggplot(DS, aes(x=f1, y=ACC_L, fill=f2))  

    geom_boxplot(position=position_dodge(0.7), width=.6, color='black',
                 outlier.alpha=FALSE)  
  
    geom_point(position=position_jitterdodge(.3),size=1)  

    stat_summary(fun="mean",geom = "point", size=5, 
               shape=18, position=position_dodge(0.7), color='lightcyan1',
               show.legend=FALSE)  

    theme_minimal()  
  
# Change the colors
  
    scale_fill_manual( values = c('Female' = '#F8766D', 'Male' = '#00BFC4'))  
  
# Change the axis labels

#    ylab("FA")  
    xlab("Condition") 
 

обновленный boxplot