Why is R inconsistent with the add
parameter in the plot()
function?
It sometimes works and sometimes doesn\'t!
In this example, it takes the param
This is because when you call plot(0:10, 0:10*3)
or plot(c(2, 3, 4), c(20,10,15))
, you are indirectly calling plot.default()
, which in turn calls plot.xy()
, whereas the other two calls you mention are running plot.function()
. add
is an argument for plot.function()
, but not for plot.xy()
.
You can get around this inconsistency by setting par(new = TRUE)
, but then you need to make sure that you don't add fresh axis labels or redraw the axes. EDIT: As pointed out in the comment, you have to make sure that the range is the same as the previous plot. e.g.:
plot(0:10, 0:10*3)
plot(identity, add=T, xlim=c(0,10))
plot(function (x) { sin(x)*10 }, add=T, xlim=c(0,10))
par(new = TRUE)
plot(c(2, 3, 4), c(20,10,15), pch="A",
axes = FALSE, ## don't redraw the axes
xlab = '', ylab = '', ## no fresh axis labels
xlim = c(0,10), ylim = c(0,30)) ## keep the same limits as before
As Ben Bolker mentions, methods('plot')
will show you what methods can be called when running plot()
- the different methods have different arguments, which are listed when you call args(plot.foo)
or in the help page ?plot.foo