title: Error "Discrete value supplied to continuous scale" when manually `dodge`ing a point in ggplot
body: <p>I am trying to manually <code>dodge</code> a point to align with the error bars. </p>
  
  <p>The <code>head</code> of my data are included here and my full data set is included at the bottom of the post through <code>dput</code></p>
  
  <pre><code>&gt; head(Data, n=15)
     StudyArea      ID Obs variable value       SE   id
  1       Cali CAL_F01  22 CaliPred    NA       NA  0.0
  2       Cali CAL_F17  50 CaliPred    NA       NA  0.0
  3       Cali CAL_F19   8 CaliPred    NA       NA  0.0
  4       Cali CAL_F23  15 CaliPred    NA       NA  0.0
  5       Cali CAL_F43  54 CaliPred    NA       NA  0.0
  6       Cali CAL_M33  30 CaliPred    NA       NA  0.0
  7       Cali CAL_M36  11 CaliPred    NA       NA  0.0
  8       Colo COL_P01  90 CaliPred    77 6.314889 -7.1
  9       Colo COL_P03  53 CaliPred    55 5.497654 -7.1
  10      Colo COL_P05   9 CaliPred     5 1.642908 -7.1
  11      Colo COL_P06  42 CaliPred    38 4.518088 -7.1
  12      Colo COL_P07  72 CaliPred    84 6.877948 -7.1
  13      Colo COL_P08  40 CaliPred    47 5.483234 -7.1
  14      Colo COL_P09  60 CaliPred    65 6.076180 -7.1
  15      Colo COL_P10  58 CaliPred    61 5.504660 -7.1
  </code></pre>
  
  <p>As seen in the figure below, the points are not correctly aligned.  The error bars are manually <code>dodged</code> with the <code>id</code> column within <code>Data</code> (line three of the code below).</p>
  
  <pre><code>p &lt;-ggplot(Data , aes(x=ID))+
    geom_point(aes(y=value, color=variable),size=3, )+
    geom_errorbar(aes(ymin=value-SE, ymax=value+SE, x=as.numeric(factor(ID))+id, color=variable),lty = 2, cex=1, width = 0.5)+
    geom_point(aes(y=Obs),shape="*",size=12)+
    facet_wrap(~StudyArea,scales="free",ncol=1) +
    theme(axis.text.x=element_text(angle=30, hjust=1))
  pp &lt;- p + scale_color_manual(name="Area", 
                          values=c("red", "blue","darkgreen"), 
                          breaks=c("Pred", "Pred", "Pred"))+
          theme(legend.position="bottom")
  </code></pre>
  
  <p>When I add <code>x=as.numeric(factor(ID))+id</code> to the <code>aes</code> argument of the point (as in the code below), I get the error <code>Error: Discrete value supplied to continuous scale</code></p>
  
  <pre><code>p &lt;-ggplot(Data , aes(x=ID))+
    geom_point(aes(y=value, x=as.numeric(factor(ID))+id, color=variable),size=3, shape=1)+
    geom_errorbar(aes(ymin=value-SE, ymax=value+SE, x=as.numeric(factor(ID))+id, color=variable),lty = 2, cex=1, width = 0.5)+
    geom_point(aes(y=Obs),shape="*",size=12)+
    facet_wrap(~StudyArea,scales="free",ncol=1) +
    theme(axis.text.x=element_text(angle=30, hjust=1))
  pp &lt;- p + scale_color_manual(name="Area", 
                          values=c("red", "blue","darkgreen"), 
                          breaks=c("Pred", "Pred", "Pred"))+
          theme(legend.position="bottom")
  pp
  </code></pre>
  
  <p>Question: How do I correctly <code>dodge</code> the points to align with the manually specified error bars?</p>
  
  <p><img src="https://i.stack.imgur.com/87oBP.jpg" alt="fig"></p>
  
  <p>Thanks in advance!  </p>
  
  <p>All data</p>
  
  <pre><code>Data &lt;- structure(list(StudyArea = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 
  1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 
  3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
  2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 
  2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("Cali", 
  "Colo", "Pata"), class = "factor"), ID = structure(c(1L, 2L, 
  3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 
  17L, 18L, 19L, 20L, 21L, 22L, 23L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 
  8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 
  21L, 22L, 23L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 
  12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L), .Label = c("CAL_F01", 
  "CAL_F17", "CAL_F19", "CAL_F23", "CAL_F43", "CAL_M33", "CAL_M36", 
  "COL_P01", "COL_P03", "COL_P05", "COL_P06", "COL_P07", "COL_P08", 
  "COL_P09", "COL_P10", "COL_P12", "COL_P13", "PAT_F03", "PAT_F04", 
  "PAT_F05", "PAT_M02", "PAT_M03", "PAT_M04"), class = "factor"), 
      Obs = c(22L, 50L, 8L, 15L, 54L, 30L, 11L, 90L, 53L, 9L, 42L, 
      72L, 40L, 60L, 58L, 20L, 37L, 50L, 67L, 20L, 19L, 58L, 5L, 
      22L, 50L, 8L, 15L, 54L, 30L, 11L, 90L, 53L, 9L, 42L, 72L, 
      40L, 60L, 58L, 20L, 37L, 50L, 67L, 20L, 19L, 58L, 5L, 22L, 
      50L, 8L, 15L, 54L, 30L, 11L, 90L, 53L, 9L, 42L, 72L, 40L, 
      60L, 58L, 20L, 37L, 50L, 67L, 20L, 19L, 58L, 5L), variable = structure(c(1L, 
      1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
      1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
      2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
      3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
      3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("CaliPred", "ColoPred", 
      "PataPred"), class = "factor"), value = c(NA, NA, NA, NA, 
      NA, NA, NA, 77, 55, 5, 38, 84, 47, 65, 61, 25, 43, 34, 66, 
      18, 15, 34, 5, 18, 49, 6, 13, 31, 27, 12, NA, NA, NA, NA, 
      NA, NA, NA, NA, NA, NA, 32, 60, 18, 14, 32, 5, 30, 53, 7, 
      15, 49, 32, 14, 86, 62, 5, 48, 93, 52, 73, 68, 28, 47, NA, 
      NA, NA, NA, NA, NA), SE = c(NA, NA, NA, NA, NA, NA, NA, 6.31488929298672, 
      5.497653791366, 1.64290834339061, 4.51808782802661, 6.87794805206761, 
      5.48323374891446, 6.07617986453451, 5.50465952513403, 3.46640687133807, 
      4.67925642640691, 3.89436451780002, 5.95337845105602, 3.16947277410086, 
      2.65632106571484, 4.54262669561671, 1.48630436319955, 3.38512609777978, 
      4.89449176574693, 1.22686235133486, 2.55142136173085, 4.65844412010727, 
      3.84103820176873, 2.38653357702158, NA, NA, NA, NA, NA, NA, 
      NA, NA, NA, NA, 3.92516789504607, 5.92416243616404, 3.14626294785635, 
      2.67848085040132, 4.48377790891048, 1.49789328005297, 3.43538336956585, 
      4.86558548401014, 0.927955791077904, 2.51531952706457, 5.07056696779931, 
      3.85815493933999, 2.34767760968492, 6.39770960804122, 5.58054623577558, 
      1.64529737748105, 4.38254693434801, 6.95044087111244, 5.54875633450289, 
      6.16583286016463, 5.32461337007243, 3.47652151729081, 4.68257865863345, 
      NA, NA, NA, NA, NA, NA), id = c(0, 0, 0, 0, 0, 0, 0, -7.1, 
      -7.1, -7.1, -7.1, -7.1, -7.1, -7.1, -7.1, -7.1, -7.1, -17.1, 
      -17.1, -17.1, -17.1, -17.1, -17.1, -0.1, -0.1, -0.1, -0.1, 
      -0.1, -0.1, -0.1, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, 
      -16.9, -16.9, -16.9, -16.9, -16.9, -16.9, 0.1, 0.1, 0.1, 
      0.1, 0.1, 0.1, 0.1, -6.9, -6.9, -6.9, -6.9, -6.9, -6.9, -6.9, 
      -6.9, -6.9, -6.9, -17.7, -17.7, -17.7, -17.7, -17.7, -17.7
      )), .Names = c("StudyArea", "ID", "Obs", "variable", "value", 
  "SE", "id"), row.names = c(NA, -69L), class = "data.frame")
  </code></pre>