tl; dr: Chcesz użyć curve
(z add=TRUE
) lub lines
.
Nie zgadzam się z par(new=TRUE)
tym, ponieważ spowoduje to podwójne wydrukowanie znaczników i etykiet osi. Na przykład
Dane wyjściowe plot(sin); par(new=T); plot( function(x) x**2 )
.
Zobacz, jak pomieszane są etykiety osi pionowej! Ponieważ zakresy są różne, musisz ustawić ylim=c(lowest point between the two functions, highest point between the two functions)
, co jest mniej łatwe niż to, co zamierzam ci pokazać --- i znacznie mniej łatwe, jeśli chcesz dodać nie tylko dwie krzywe, ale wiele.
To, co zawsze myliło mnie w spiskowaniu, to różnica między curve
i lines
. (Jeśli nie pamiętasz, że są to nazwy dwóch ważnych poleceń drukowania, po prostu zaśpiewaj .)
Oto duża różnica między curve
i lines
.
curve
wykreśli funkcję, np curve(sin)
. lines
Działki punktów z wartości x i y, takie jak: lines( x=0:10, y=sin(0:10) )
.
A oto niewielka różnica: curve
trzeba się do niego zwrócić z add=TRUE
tym, co próbujesz zrobić, przy lines
założeniu, że dodajesz do istniejącej fabuły.
Oto wynik połączenia plot(0:2); curve(sin)
.
Za kulisami sprawdź methods(plot)
. I sprawdź body( plot.function )[[5]]
. Kiedy wywołujesz plot(sin)
R, odkrywa, że sin
jest to funkcja (a nie wartości y) i używa plot.function
metody, która kończy się wywołaniem curve
. Podobnie curve
narzędzie przeznaczone do obsługi funkcji.
?curve
. Zastosowanieadd=TRUE
.