Search code examples
rggplot2ggpubrerrorbar

displacing of error bar use ggbarplot from ggpubr package, when there are NA


The codes work when there are observations for all group in the dataset. However, when a group of data is NA, the error bars will be displaced. Here is an example:

library(ggpubr)
# Load the ToothGrowth dataset
data(ToothGrowth)
ggbarplot(ToothGrowth, x = "dose", y = "len", 
   add = "mean_se", 
   color = "supp", palette = "jco",
   position = position_dodge(0.8)
) + 
  ggtitle("no NA in dataset")

enter image description here

# Motified dataset
ToothGrowth$len[ToothGrowth$dose == 2 & ToothGrowth$supp == "VC"] <- NA

head(ToothGrowth)
ggbarplot(ToothGrowth, x = "dose", y = "len", 
   add = "mean_se", 
   color = "supp", palette = "jco",
   position = position_dodge(0.8)
)+
  ggtitle("one group is NA")

enter image description here


Solution

  • You could fix your issue by setting preserve = "single" in position_dodge():

    library(ggpubr)
    #> Loading required package: ggplot2
    
    ToothGrowth$len[ToothGrowth$dose == 2 & ToothGrowth$supp == "VC"] <- NA
    
    ggbarplot(ToothGrowth,
      x = "dose", y = "len",
      add = "mean_se",
      color = "supp", palette = "jco",
      position = position_dodge(0.8, preserve = "single")
    ) +
      ggtitle("one group is NA")