Ich versuche, ein Diagramm von zwei Funktionen (dh 2x + 1 und 3x - 0,5 * x^2) auf einem gleichen Diagramm Blatt, aber mit zwei verschiedenen Bereichen (x < = 3 bzw. x> 3). Bisher habe ich zwei Funktionen wie folgt definiert:Zeichnen eines Graphen von zwei Funktionen in R
# Define first function with given range
Line1 <- function(x) {
if (x <= 3) {
(3*x) + 1 } else {
}
}
# Define second function with given range
Line2 <- function(x) {
if (x > 3) {
2*x - (0.5*(x^2)) } else {
}
}
# Plot functions
ggplot(d,aes(x=x)) + stat_function(fun=rwrap(Line1,0,3),geom="line",col="blue")
+ stat_function(fun=rwrap(Line2,3,5),geom="line",col="red")`
Wenn ich den Code ausführen, bekomme ich folgende Fehlermeldungen:
Error: Discrete value supplied to continuous scale In addition:
Warning messages:
1: In if (x <= 3) { : the condition has length > 1 and only the first element will be used
2: In if (x > 3) { : the condition has length > 1 and only the first element will be used
Ich habe versucht, es zu beheben, aber ich bin gerade verloren An diesem Punkt.
Warum wird Ihr Code zitiert? – Gregor
Das Problem ist, dass Sie Funktionen nicht vektorisiert sind. Sie arbeiten für einen einzelnen Wert von "x" gleichzeitig, aber "Line1 (0:10)" funktioniert nicht. Machen Sie es zu einer einzigen Funktion mit 'ifelse' als vektorisierte Version von' if {} else {} ':' foo = Funktion (x) ifelse (x <= 3, 3 * x + 1, 2 * x - 0.5 * x^2) '. – Gregor
Entschuldigen Sie das Angebot, ich habe einen Fehler beim Kopieren und Einfügen gemacht. Ich habe deine Aussage verstanden. Wie aber würde ich die Linien mit verschiedenen Farben zeichnen? – user8550070