2010-10-29 5 views
21

Ein Weg, um die Kurve entsprechend einer bestimmten Funktion zu zeichnen, ist dies:Zeichnen mehr als eine Funktionskurven in der gleichen Parzelle

fun1 <- function(x) sin(cos(x)*exp(-x/2)) 
plot (fun1, -8, 5) 

Wie kann ich von einer anderen Funktion Kurve hinzufügen (zB fun2, die auch durch definiert ist, seine mathematische Formel) in der gleichen Handlung?

+0

Verwenden plotFun {Mosaik} http://rgm3.lab.nig.ac.jp/RGM/R_rdfile?f=mosaic/man/plotFun.Rd&d=R_CC –

Antwort

24
plot (fun2, -8, 5, add=TRUE) 

prüfen auch Seite für curve helfen.

+8

Beachten Sie, dass Sie den 'add' Parameter nicht immer verwenden können: Er funktioniert hier, weil Sie eine Funktion zum Plotten übergeben, aber wenn Sie zum Beispiel' plot (x, y, add = TRUE) schreiben, werden Sie einfach bekomme eine Warnung, dass 'add' kein grafischer Parameter ist. – nico

+1

@nico Ja. Dies ist ein sehr spezieller Fall, bei dem "Plot" für den Funktionsaufruf "curve" auftritt. Verwenden Sie deshalb 'curve', um Funktionen zu zeichnen. – Marek

8

Verwenden Sie die points Funktion. Es hat dieselbe exakte Syntax wie plot.

So zum Beispiel:

fun1 <- function(x) sin(cos(x)*exp(-x/2)) 

x <- seq(0, 2*pi, 0.01) 
plot (x, fun1(x), type="l", col="blue", ylim=c(-0.8, 0.8)) 
points (x, -fun1(x), type="l", col="red") 

Beachten Sie, dass Plotparameter wie ylim, xlim, Titel und so werden nur von dem ersten plot Aufruf verwendet.

+2

wie über Leitungen direkt :) – VitoshKa

+0

Ja, das ist eine andere Option . Es hängt wirklich davon ab, was Sie tun müssen ... Es gibt mehrere Möglichkeiten, diese Aufgabe in R zu erledigen. – nico

5

Mit Par()

fun1 <- function(x) sin(cos(x)*exp(-x/2)) 
fun2 <- function(x) sin(cos(x)*exp(-x/4)) 

plot(fun1, -8,5) 
par(new=TRUE) 
plot(fun2, -8,5) 
+1

Ich benutze das gleiche Paradigma die ganze Zeit. Wahrscheinlich möchtest du einen ylim = range (...) Ausdruck im ersten Plot haben, vielleicht eine andere Farbe im zweiten Plot, mit xlab und ylab spielen, Achsen unterdrücken wenn sich die Skalierung nicht überlagert usw. pp. Zumindest für einen mehr Allgemeine lösung. Was du gezeigt hast, beantwortet die gestellte Frage :) –

22

Mit matplot:

fun1<-function(x) sin(cos(x)*exp(-x/2)) 
fun2<-function(x) sin(cos(x)*exp(-x/4)) 
x<-seq(0,2*pi,0.01) 
matplot(x,cbind(fun1(x),fun2(x)),type="l",col=c("blue","red")) 
+6

matplot ist die beste Antwort, denn wenn du anfängst, Kurven hinzuzufügen, könntest du damit enden, dass sie den aktuellen Plotbereich verlassen. Matplot sortiert das für Sie aus und sorgt dafür, dass beide Funktionen im Blick bleiben. – Spacedman

+2

@ Spacedman: Was, wenn Sie die Funktionen nicht im Voraus kennen? :) – nico

Verwandte Themen