[R] How to avoid ggplot clipping the x axis [damn, replaces previous Email]

Chris Evans chr|@ho|d @end|ng |rom p@yctc@org
Sun Jan 10 11:34:43 CET 2021


[I must try to remember that swapping between Rstudio and my Emailer is a recipe for hitting ctrl-enter and posting prematurely: sorry!] 

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)) 
# x labels on plot are 2, 4 & 6 

ggplot(dat = tibDat, 
aes(x = x, y = y)) + 
geom_point() + 
expand_limits(x = c(1,6)) 
# same 

ggplot(dat = tibDat, 
aes(x = x, y = y)) + 
geom_point() + 
scale_x_continuous(breaks = 1:6, labels = 1:6) 
# x labelled at 2:5 (why?!) 

ggplot(dat = tibDat, 
aes(x = x, y = y)) + 
geom_point() + 
xlim(c(1,6)) + 
coord_cartesian(clip = "off") 
# back to 2, 4, 6 

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

### OK, getting desperately hopeful 
ggplot(dat = tibDat, 
aes(x = x, y = y)) + 
geom_point() + 
xlim(c(0,6)) 
# x axis has 0, 2, 4 and 6 (surely inconsistent behaviour?) 

ggplot(dat = tibDat, 
aes(x = x, y = y)) + 
geom_point() + 
xlim(c(0.1,6)) 
# x axis has 0, 2, 4 and 6 

Can anyone see the simple answer that is eluding me?! 

TIA, 

Chris 


-- 
Small contribution in our coronavirus rigours: 
https://www.coresystemtrust.org.uk/home/free-options-to-replace-paper-core-forms-during-the-coronavirus-pandemic/ 

Chris Evans <chris using psyctc.org> Visiting Professor, University of Sheffield <chris.evans using sheffield.ac.uk> 
I do some consultation work for the University of Roehampton <chris.evans using roehampton.ac.uk> and other places 
but <chris using psyctc.org> remains my main Email address. I have a work web site at: 
https://www.psyctc.org/psyctc/ 
and a site I manage for CORE and CORE system trust at: 
http://www.coresystemtrust.org.uk/ 
I have "semigrated" to France, see: 
https://www.psyctc.org/pelerinage2016/semigrating-to-france/ 
https://www.psyctc.org/pelerinage2016/register-to-get-updates-from-pelerinage2016/ 

If you want an Emeeting, I am trying to keep them to Thursdays and my diary is at: 
https://www.psyctc.org/pelerinage2016/ceworkdiary/ 
Beware: French time, generally an hour ahead of UK. 

	[[alternative HTML version deleted]]



More information about the R-help mailing list