Skip to content

How to avoid ggplot clipping the x axis

1 message · Chris Evans

#
I am sure I am doing something stupid but I can't see what. I am plotting data and want the x axis labels to reflect the theoretical range of the x variable which happens to be 1:6 but the observed values have range 2.6 to 5.9. 

I thought xlim(c(1,6)) should have got me that quite simply but it doesn't.  I think this is a reproducible example of my failures (!)

library(tidyverse)
library(ggplot2)
x <- seq(2,5.8,.2)
list(x = x,
     y = rnorm(length(x))) %>%
  as_tibble() -> tibDat

ggplot(dat = tibDat,
       aes(x = x, y = y)) +
  geom_point() +
  xlim(c(1,6))
  
ggplot(dat = tibDat,
       aes(x = x, y = y)) +
  geom_point() +
  scale_x_continuous(breaks = 1:6, labels = 1:6) 
  
ggplot(dat = tibDat,
       aes(x = x, y = y)) +
  geom_point() +
  xlim(c(1,6)) +
  coord_cartesian(clip = "off")

ggplot(dat = tibDat,
       aes(x = x, y = y)) +
  geom_point() +
  xlim(c(1,6)) +
  coord_cartesian(expand = TRUE)

Bizarrely (to me)

ggplot(dat = tibDat,
       aes(x = x, y = y)) +
  geom_point() +
  xlim(c(0,6))