Ich habe zwei data.frames, eine mit Rohdaten und die andere mit Modellierungskoeffizienten, die ich aus den Rohdaten abgeleitet habe.Overlay mehrere stat_function Aufrufe in ggplot2
Mehr Details: Der erste data.frame "roh" enthält "Zeit" (0s bis 900s) und "OD" für viele Varianten und vier Läufe. Der zweite Datenrahmen "coef" enthält eine Zeile pro Variant/Lauf-Kombination mit den einzelnen Koeffizienten ("M", "D.1" und "t0.1") in dieser Reihe.
Ich habe die Rohdatenaufteilung pro Variante geplottet und farbig nach runID, kein Problem. Aber jetzt möchte ich die Modellkurven nach der runID überlagern.
Da die Modellierungskoeffizienten in einem anderen data.frame sind (mit verschiedenen Dimensionen, also kann ich sie nicht einfach binden), funktioniert stat_function nicht für mich. Ich kann auf eine Kurve zeigen, die zu einer Zeit zeigt.
Ich habe mit einem versuchten() {} Schleife einer stat_function Schicht jedes Mal Zugabe:
p <- ggplot(temp, aes(Time, OD)) + geom_point(aes(colour = runID), size = 2) #works fine!
calc <- function(x){temp.n$M[ID] * (1 - exp(temp.n$D.1[ID] * temp.n$t0.1[ID] - x)))}
for(ID in 1:length(unique(temp.n$runID))) {
p <- p + stat_function(fun = calc)
}
print(p)
Am Ende all „p“ zurückgibt, ist der Plot der Rohdaten und die letzte Kurve aus dem Schleifenbit. "p" scheint jedes Mal, wenn ich versuche, eine neue "stat_function" -Schicht hinzuzufügen, in den ursprünglichen Zustand zurückzukehren.
Irgendwelche Ideen?
Vielleicht die einfachste Lösung wäre, die data.frames zusammenzuführen. Ist das machbar? – DrewConway
Können Sie ein reproduzierbares Beispiel liefern? Das Problem liegt in der Verwendung des Variablen-Scopings. – hadley