title: dodge discrete y values, geom_segment()
body: <p>Here is my reproducible example:</p>
  
  <pre><code>IND.factions &lt;- rbind(c("Mughal Empire", "IND", "1526-1-1", "1857-1-1", "IND"),
                    c("Maratha Empire", "IND", "1674-1-1", "1818-1-1", "IND"),
                    c("Vijayanagara Empire", "IND", "1336-1-1", "1646-1-1", "IND"),
                    c("Deccan Sultanates", "IND", "1527-1-1", "1686-1-1", "IND"),
                    c("Bahmani Sultanate", "IND", "1347-1-1", "1527-1-1", "IND"),
                    c("EIC", "IND", "1612-1-1", "1757-1-1", "ENG"),
                    c("Company Rule", "IND", "1757-1-1", "1858-1-1", "ENG"),
                    c("Maratha Empire", "IND", "1858-1-1", "1947-1-1", "ENG")
                    )
  
  IND.factions &lt;- data.frame(IND.factions, stringsAsFactors = FALSE)
  names(IND.factions) &lt;- c("Person", "Country", "StartDate", "EndDate", "Origin")
  IND.factions$StartDate &lt;- as.Date(IND.factions$StartDate, "%Y-%m-%d")
  IND.factions$EndDate &lt;- as.Date(IND.factions$EndDate, "%Y-%m-%d")
  </code></pre>
  
  <p>What I want to visualise is something like a timeline:</p>
  
  <pre><code>library(ggplot2)
  p &lt;- ggplot(data = IND.factions, aes(y = Country)) + 
     geom_segment(aes(x = StartDate, xend = EndDate, yend = Country, color = Origin), size = 10, position = position_dodge(width = 10))
  p
  </code></pre>
  
  <p>I couldn't find a solution for dodging the overlapping segments. Has anyone a workaround in mind?
  Of course I am aware that I could split it up into different factors, but that would be only my "worstcase" solution</p>