Question

I'm trying to fix the error bars so that they are actually readable on my graph. The only one that are causing problems are on the 2013 data. How do I go about doing this? I saw some posts about jitter or dodge but I am not sure how to apply that to fix my issue.

Here is the code I am attempting to alter:

YearlyDensity <- read.table(header=T, text='
Station Year       mean           se
   M-25 2013   8944.444     3636.871
   M-25 2008       4212         2371
   M-25 2004        963          291
   M-45 2013   8495.169     2111.072
   M-45 2008      13023         1347
   M-45 2004       8748         1740
    X-2 2013  12345.411     1166.905
')    

library(ggplot2)
ggplot(YearlyDensity, aes(x=Year, y=mean, colour=Station,group=Station)) +
  geom_errorbar(aes(ymin=mean-se, ymax=mean+se), colour="black", width=.2) +
  geom_line(size=.8) +
  geom_point(size=4, shape=18) +
  coord_cartesian(ylim = c(0, 16000)) +
  scale_y_continuous(breaks=seq(0,16000,2000)) +
  xlab("Sampling Year") +
  ylab("Mean Density") +
  labs(fill="") +
  theme_bw() +
    theme(legend.justification=c(1,0), legend.position=c(1,0))
Was it helpful?

Solution

You to set the dodge width to the same value for all geoms, i.e. add position = position_dodge(width = <the-desired-width>) to each of them. See What is the width argument in position_dodge? for details.

# set desired dodge width
pd <- position_dodge(width = 0.4)

ggplot(YearlyDensity, aes(x = Year, y = mean, colour = Station, group = Station)) +
  geom_errorbar(aes(ymin = mean-se, ymax = mean+se),
                colour = "black", width = 0.2, position = pd) +
  geom_line(size = .8, position = pd) +
  geom_point(size = 4, shape = 18, position = pd) +
  coord_cartesian(ylim = c(0, 16000)) +
  scale_y_continuous(breaks = seq(0, 16000, 2000)) +
  xlab("Sampling Year") +
  ylab("Mean Density") +
  labs(fill = "") +
  theme_bw() +
  theme(legend.justification = c(1, 0), legend.position = c(1, 0))

enter image description here

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top