2016-09-19 10 views
1

ich die folgende Funktion in R plotten müssen:Plot eine Funktion in R

M(x) = 2 + 0.4x {when x <= 0} 
     -2 + 0.6x {when x > 0} 

Bisher habe ich versucht, die folgenden:

fx1 = function(x){ 
    2+0.4*x 
} 
fx2 = function(x){ 
    -2-0.6*x 
} 
plot(fx1, -10, 0) 
plot(fx2, 0, 10) 

Aber die Funktionen sind in zwei verschiedenen Fenstern aufgetragen . Ich habe auch versucht, hinzuzufügen: add=TRUE zu der zweiten Handlung, die ich auf Stack Overflow gelesen habe, aber das hat mir auch nicht geholfen.

+0

Jedes Mal, wenn Sie Plot nennen, erhalten Sie eine neue Fenster. Ersetzen Sie das Diagramm (fx2 ...) durch Linien (fx2 ...) und fügen Sie eine Linie in das gleiche Diagramm ein, das bereits geöffnet ist. Überprüfen Sie diesen Link für ein wenig mehr Informationen zum Plotten: http://www.statmethods.net/graphs/line.html –

+0

Wenn ich Linien verwende, erhalte ich den folgenden Fehler: Fehler in as.double (x) : kann nicht Typ 'Schließung' zu Vektor des Typs 'doppelt' erzwingen Ich habe die add = TRUE zu arbeiten, obwohl, wissen Sie, wie Sie die Intervalle richtig definieren, es ist nur mit dem Intervall von der ersten Handlung. –

Antwort

1

Verwenden Sie zum Plotten von Funktionen curve. Verwenden Sie plot, um die Koordinaten vor dem Hinzufügen von Kurven zu erhalten:

fx1 = function(x){ 
    2+0.4*x 
} 
fx2 = function(x){ 
    -2-0.6*x 
} 
plot(NA, xlim=c(-10,10), ylim=c(-10,10)) 
curve(fx1, from = -10, to = 0, add=TRUE) 
curve(fx2, from = 0, to = 10, add=TRUE) 

Edit: Für eine bessere Definition bei x = 0, kann ich vorschlagen

fx1 = function(x) 2+0.4*x 
fx2 = function(x) -2-0.6*x 

plot(NA, xlim=c(-10,10), ylim=c(-10,5), ylab="value") 
curve(fx1, from = -10, to = 0, add=TRUE) 
curve(fx2, from = 0, to = 10, add=TRUE) 
points(0, fx1(0), pch=15) 
points(0, fx2(0), pch=22)