Adjusting x and y axes' limits

In this recipe, we will learn how to adjust the x and y limits of plots, which is useful in adjusting a graph to suit your presentation needs and adding additional data to the same plot.

How to do it...

We will modify our first scatter plot example to demonstrate how to adjust axes limits:

plot(cars$dist~cars$speed,
xlim=c(0,30),
ylim=c(0,150))

How it works...

In our original scatter plot in the first recipe of this chapter, the x axis limits were set to just below 5 up to 25 and the y axis limits were set from 0 to 120. In this example, we set the x axis limits from 0 to 30 and the y axis limits to 0 to 150 using the xlim and ylim arguments, respectively.

Both xlim and ylim take a vector of length 2 as valid values in the c(minimum,maximum) form, that is, xlim=c(0,30) means set the x axis minimum limit to 0 and maximum limit to 30.

There's more...

You might have noticed that even after setting the x and y limit values, there is a gap left at either edge. The two axes' zeroes don't coincide. This is because R automatically adds some additional space at both edges of the axes so that if there any data points at the extremes, they are not cut off by the axes. If you wish to set the axes limits to exact values, in addition to specifying xlim and ylim, you must also set the xaxs and yaxs arguments to "i":

plot(cars$dist~cars$speed,
xlim=c(0,30),
ylim=c(0,150),
xaxs="i",
yaxs="i")

Sometimes, we might wish to reverse a data axis, say, to plot the data in the descending order along one axis. All we have to do is swap the minimum and maximum values in the vector argument supplied as xlim or ylim. So, if we want the x axis speed values in the preceding graph in the descending order, we need to set xlim to c(30,0):

plot(cars$dist~cars$speed,
xlim=c(30,0),
ylim=c(0,150),
xaxs="i",
yaxs="i")

See also

There are a few more recipes on adjusting the axes tick marks and labels in Chapter 3, Beyond the Basics – Adjusting Key Parameters.