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
.