title: How to avoid overlapping plots in ggplot2
body: <p>I want to plot estimates for three age groups (agecat) by two exposures (expo). The code below produced overlapped plots with alphabetically rearranged age groups. How could I avoid overlap of the plots and plot maintain the existing order of the age groups?
  I used this code: </p>
  
  <pre><code>ggplot(mydf, aes(x = agecat, y = est,ymin = lcl, ymax = ucl,  group=agecat,color=agecat,shape=agecat))  +
    geom_point(position="dodge",size = 4) +
    geom_linerange(position="dodge",size =0.7) +
    geom_hline(aes(yintercept = 0))  + 
    labs(colour="Age Group", shape="Age Group") +    theme(axis.title=element_text(face="bold",size="12"),axis.text=element_text(size=12,face="bold")) 
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/XcHWh.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/XcHWh.png" alt="enter image description here"></a>
  Sample data:</p>
  
  <pre><code> &gt; dput(mydf)
      structure(list(expo = c(0, 1, 0, 1, 0, 1), est = c(0.290780632898979, 
      0.208093573361601, 0.140524761247529, 0.156713614649751, 0.444402395010579, 
      0.711469870845916), lcl = c(0.0679784035303221, -0.00413163014975071, 
      -0.208866152400888, -0.175393089838871, -0.227660022186016, 0.0755871550441212
      ), ucl = c(0.514078933380535, 0.420769190852455, 0.491138970050864, 
      0.489925205664665, 1.12099179726843, 1.35139300089608), agecat = c("young", 
      "young", "middle", "middle", "old", "old")), .Names = c("expo", 
      "est", "lcl", "ucl", "agecat"), row.names = c(2L, 4L, 6L, 8L, 
      10L, 12L), class = "data.frame")
  </code></pre>