anpassen Wie kann ich das method
Argument von geom_smooth()
von ggplot
seine dynamischen zu gestalten und in einer Gruppe auf die Anzahl der Datenpunkte anpassen?Make geom_smooth() von ggplot2 Anzahl der Beobachtungen
Zum Beispiel, ich habe Daten in folgendem Format:
1. DATE PRODUCT SIZE
2. 3/1/2017 A 10
3. 3/2/2017 B 14
4. 3/3/2017 C 25
5. 3/4/2017 A 16
6. etc.
Diese Chart völlig in Ordnung und füge eine Löss fit zu jeder Gruppe (PRODUCT
) mit dem folgenden Code (jede PRODUCT
Gruppe hat etwa 20 Einträge) :
DT<-read.csv("TEST_DATA.csv")
DT$DATE<-as.Date(DT$DATE, "%m/%d/%Y")
myPlot<-ggplot(DT, aes(DATE, SIZE, color = PRODUCT))
myPlot + geom_point() + geom_smooth(method = "loess", se = FALSE)
Doch lassen Sie uns sagen, dass ich in nur zwei Datenpunkte für eine vierte Produkt „D
“ hinzufügen. Ich bekomme dann die folgenden Warnmeldungen und keine Loess-Fit-Linien werden zum Plot für jede Gruppe hinzugefügt.
Warning messages:
1: In simpleLoess(y, x, w, span, degree = degree, parametric = parametric, ... : span too small. fewer data values than degrees of freedom.
Ich glaube, diese Warnung auf die Tatsache zurückzuführen ist, dass die Anzahl der Beobachtungen für das Produkt D
weniger ist, dass die Freiheitsgrade für die Löss fit.
Einstellung method = "auto"
, wählt "loess"
sowieso, so dass es nicht hilft und die Methode auf "lm"
ist nicht was ich will.
Ich möchte das Folgende tun, kann es aber nicht ganz zum Laufen bringen und frage mich, ob jemand helfen kann?
myPlot + geom_point() + geom_smooth(data = DT, method = if(length(DT$PRODUCT)<5) {"lm"} else {"loess"}, se = F)
Wie Sie sehen können, ich versuche geom_smooth()
Verwendung method = "lm"
wenn irgendwelche Gruppen weniger als 5 Beobachtungen haben zu müssen, da sonst die "loess"
Methode verwenden. Aber ich kann nicht wirklich herausfinden, wie man auf die Anzahl der Beobachtungen jeder Gruppe innerhalb der geom_smooth()
Funktion zugreifen kann.
Hallo Constantinos, danke für Sie antworten - es scheint, dass die Option n nur darüber entscheidet, wie viele Auflösungspunkte verwendet werden, um den Löss fit zu zeichnen, aber dies bezieht sich nicht auf die Anzahl von zugrunde liegenden Beobachtungen. Ich würde gerne eine "lm" -Anpassung verwenden, wenn ich 5 Beobachtungen oder weniger habe, ansonsten verwende "Löss". – dme
Hallo Constantinos, das macht genau das, was ich brauche. Vielen Dank! – dme