Search code examples
rggplot2

Set upper limit to include label greater than the maximum value


My data range always seems to be greater than the top label in the y-axis. Is there a way I can automatically include it without manually setting limits?

e.g. in

ggplot(data.frame(x=1:11, y=c(11:17,5:2)), aes(x,y)) + geom_point()

I would like to have labels 0 and 20 appear on the y-axis and o and 12 appear on the x-axis (and the plot expand accordingly). This should be done automatically without specifying these numbers in scale options for example.

enter image description here


Solution

  • What about the following solution:

    library(ggplot2)
    
    d <- data.frame(x=1:11, y=c(11:17,5:2))
    px <- pretty(d$x)
    py <- pretty(d$y)
    
    ggplot(d, aes(x,y)) + geom_point() +
      scale_x_continuous(breaks=px, limits=range(px)) +
      scale_y_continuous(breaks=py, limits=range(px))
    

    enter image description here