jitter in R

is.outlier <- function (x, na.rm = T) {
  x < quantile(x, .25, na.rm = T) - 1.5 * IQR(x, na.rm = T) |
    x > quantile(x, .75, na.rm = T) + 1.5 * IQR(x, na.rm = T)
}

pg %>% group_by(species) %>%
  mutate(outlier.p = is.outlier(body_mass_g)) %>%
  ungroup() -> pg

ggplot(pg, aes(x = species, y = body_mass_g, fill = species)) +
  geom_boxplot(outlier.color = NA) +
  geom_jitter(data = pg[pg$outlier.p,], aes(col = I("red"))) +
  theme_bw()