Это потому, что когда вы звоните plot(0:10, 0:10*3)
или plot(c(2, 3, 4), c(20,10,15))
, вы косвенно звоните plot.default()
, что, в свою очередь, вызывает plot.xy()
, тогда как два других упомянутых вами вызова выполняются plot.function()
. add
является аргументом для plot.function()
, но не для plot.xy()
.
Вы можете обойти это несоответствие, установив par(new = TRUE)
, но тогда вам нужно убедиться, что вы не добавляете новые метки осей и не перерисовываете оси. РЕДАКТИРОВАТЬ: Как указано в комментарии, вы должны убедиться, что диапазон совпадает с предыдущим графиком. 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
Как упоминает Бен Болкер, methods('plot')
покажет вам, какие методы можно вызывать при запуске plot()
- разные методы имеют разные аргументы, которые перечислены при вызове args(plot.foo)
или на странице справки ?plot.foo