In R, dealing with Error: ggplot2 doesnt know how to deal with data of class numeric

In R, dealing with Error: ggplot2 doesnt know how to deal with data of class numeric

The error happens because of you are trying to map a numeric vector to data in geom_errorbar: GVW[1:64,3]. ggplot only works with data.frame.

In general, you shouldnt subset inside ggplot calls. You are doing so because your standard errors are stored in four separate objects. Add them to your original data.frame and you will be able to plot everything in one call.

Here with a dplyr solution to summarise the data and compute the standard error beforehand.

library(dplyr)
d <- GVW %>% group_by(Genotype,variable) %>%
    summarise(mean = mean(value),se = sd(value) / sqrt(n()))

ggplot(d, aes(x = variable, y = mean, fill = Genotype)) + 
  geom_bar(position = position_dodge(), stat = identity, 
      colour=black, size=.3) +
  geom_errorbar(aes(ymin = mean - se, ymax = mean + se), 
      size=.3, width=.2, position=position_dodge(.9)) +
  xlab(Time) +
  ylab(Weight [g]) +
  scale_fill_hue(name = Genotype, breaks = c(KO, WT), 
      labels = c(Knock-out, Wild type)) +
  ggtitle(Effect of genotype on weight-gain) +
  scale_y_continuous(breaks = 0:20*4) +
  theme_bw()

In R, dealing with Error: ggplot2 doesnt know how to deal with data of class numeric

Leave a Reply

Your email address will not be published.