Kvothe
Kvothe

Reputation: 79

geom_errorbar - "No stat called StatHline"

I can't seem to re-generate plots (using ggplot2) that I previously generated using the code below. I now get the error message "No stat called StatHline". Is there a replacement?

data <- data.frame(
  CorrectedIntensity=c(0, -0.66, -0.37, 0, -1.04, -0.38, 0, -1.89, -1.50),
  Day=c("Day 1", "Day 9", "Day 5", "Day 1", "Day 9", "Day 5", "Day 1", "Day 9", "Day 5"))

library(ggplot2)
plot_data <- ggplot() + 
  ylim(-2.5, 0.5) + 
  geom_point(data=data, aes(x=Day, y=CorrectedIntensity), size=7, 
             colour="royalblue3", alpha=0.30) + 
  geom_errorbar(data=data, aes(x=Day, y=CorrectedIntensity, ymax=..y.., ymin=..y..), 
                stat = "hline", yintercept = "mean", width=0.3, colour="royalblue3", 
                size=1.25) + 
  stat_summary(data=data, aes(x=Day, y=CorrectedIntensity), 
               fun.ymax=function(i) mean(i) + sd(i),
               fun.ymin=function(i) mean(i) - sd(i), 
               geom="errorbar", width=0.1, colour="royalblue3")

This is what I want the plot to look like:

enter image description here

Upvotes: 3

Views: 1621

Answers (1)

jbaums
jbaums

Reputation: 27398

I think this boils down to major changes in ggplot2.

Here are a couple of options. The first uses points with shape='-' for the horizontal bars. The second uses geom_errorbar as you had used previously, but via stat_summary.

ggplot(data, aes(x=Day, y=CorrectedIntensity)) + 
  ylim(-2.5, 0.5) + 
  # data points
  geom_point(size=7, colour="royalblue3", alpha=0.30) + 
  # +/- standard deviation
  stat_summary(fun.data=function(...) mean_sdl(..., mult=1), 
               geom='errorbar', width=0.1, color='royalblue3') +
  # points for mean, using hyphens for point shape
  stat_summary(fun=mean, colour='royalblue3', geom='point', shape='-', size=30) +
  # line connecting means
  stat_summary(fun=mean, colour='royalblue3', geom='line', aes(group=1), lty=2)

enter image description here

ggplot(data, aes(x=Day, y=CorrectedIntensity)) + 
  ylim(-2.5, 0.5) + 
  # data points
  geom_point(size=7, colour="royalblue3", alpha=0.30) + 
  # +/- standard deviation      
  stat_summary(fun.data=function(...) mean_sdl(..., mult=1), 
               geom='errorbar', width=0.1, color='royalblue3') +
  # lines for means, using geom=errorbar
  stat_summary(fun=mean, aes(ymin=..y.., ymax=..y..), 
               geom='errorbar', width=0.3, color='royalblue3', size=1.25) +
  # line connecting means
  stat_summary(fun=mean, colour='royalblue3', geom='line', aes(group=1), lty=2)

enter image description here

Upvotes: 6

Related Questions