Mam dwie dane.frame, jedną zawierającą dane surowe, a drugą zawierającą współczynniki modelowania, które wyprowadziłem z nieprzetworzonych danych.Nakładanie wielu wywołań funkcji stat_function w ggplot2
Więcej szczegółów: Pierwsza data.frame "raw" zawiera "Czas" (od 0s do 900s) i "OD" dla wielu Wariantów i czterech przebiegów. Drugi element data.frame "coef" zawiera jeden wiersz na kombinację Wariant/Uruchom, z poszczególnymi współczynnikami ("M", "D.1" i "t0.1") w tym wierszu.
Wykreśliłem podział danych nieprzetworzonych w wariancie i pokolorowałem według identyfikatora runID, bez problemu. Ale teraz chcę nałożyć krzywe modelu zgodnie z identyfikatorem runID.
Ponieważ współczynniki modelowania znajdują się w innym folderze data.frame (o różnych rozmiarach, więc nie mogę ich powiązać), funkcja stat_function nie będzie działać dla mnie. Mogę na bieżąco wyświetlać krzywą.
Próbowałem z dla() {} pętli dodanie warstwy stat_function każdorazowo:
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)
Na koniec, wszystkie „P” zwraca się wykres danych źródłowych i końcowy łuk z pętli. "p" wydaje się powracać do swojego pierwotnego stanu za każdym razem, gdy próbuję dodać nową warstwę "stat_function".
Wszelkie pomysły?
Być może najłatwiejszą metodą byłoby scalenie danych.frames. Czy to możliwe? – DrewConway
Czy możesz podać odtwarzalny przykład? Problem polega na tym, że używasz zmiennej zakresu. – hadley