Search code examples
rggplot2geom-bar

ggplot2: How to reposition break lines next to bars in geom_bar instead of at the middle of the bar?


I have the following figure.

plot

As you can see the breaklines for the x scale (which is scaled discrete in this case) go right through the different bars. I want to these breaklines to form "lanes" in which the bars are nicely fitted. So instead of having my breaks go through the bar, I would like them to lie at the edge of each bar.

I experimented a lot with the scale_x_discrete function but just can't seem to figure out how to achieve this...


Solution

  • You can create some fake gridlines using geom_vline while hiding the true gridlines.

    library(tidyverse)
    
    data <- data.frame(x = letters[1:10], y = runif(10), stringsAsFactors = FALSE)
    
    data %>%
      ggplot(aes(x, y)) + 
      geom_bar(stat = "identity") + 
      coord_flip() + 
      geom_vline(xintercept = seq(1.5, 9.5, 1), color = "white") + 
      theme(panel.grid = element_blank())
    

    plot