tl; dr: Ви хочете використовувати curve
(з add=TRUE
) або lines
.
Я не погоджуюся з par(new=TRUE)
тим, що це вдвічі надрукує галочки та мітки осі. Напр
Вихід plot(sin); par(new=T); plot( function(x) x**2 )
.
Подивіться, як переплутані мітки вертикальної осі! Оскільки діапазони різні, вам потрібно буде встановити ylim=c(lowest point between the two functions, highest point between the two functions)
, що є менш простим, ніж те, що я збираюся показати вам ---, і набагато легше, якщо ви хочете додати не лише дві криві, а багато.
Те, що мене завжди плутало в плані, - це різниця між curve
та lines
. (Якщо ви не можете згадати, що це назви двох важливих графічних команд, просто заспівайте .)
Ось велика різниця між curve
та lines
.
curve
будуватиме функцію, як curve(sin)
. lines
ділянки з точки х і у значень, наприклад: lines( x=0:10, y=sin(0:10) )
.
І ось незначна різниця: curve
вам потрібно подзвонити add=TRUE
за тим, що ви намагаєтесь зробити, тоді як lines
уже передбачається, що ви додаєте до наявного сюжету.
Ось результат дзвінка plot(0:2); curve(sin)
.
За лаштунками перевірте methods(plot)
. І перевірити body( plot.function )[[5]]
. Коли ви називаєте plot(sin)
R, то з'ясовується, що sin
це функція (а не значення y) і використовується plot.function
метод, який завершує виклик curve
. Так curve
само інструмент призначений для обробки функцій.
?curve
. Використовуйтеadd=TRUE
.