Hier ist ein Diagramm von Bremsweg vs. Geschwindigkeit, für die cars
Daten, geglättet.geom_smooth bewegt sich basierend auf scale_y_continuous limits
ggplot(cars, aes(x=cars$speed,y=cars$dist)) +
+ scale_x_continuous(expand = c(0, 0)) +
+ scale_y_continuous(expand = c(0, 0), limits=c(-20,125)) + geom_smooth()
Beachten Sie, dass das graue Konfidenzintervall auf etwa 112,5 nach oben geht.
Nun nehme ich an, ich möchte etwas von dem unbenutzten Bereich am oberen Rand des Diagramms zuschneiden, indem ich die y-Achsen-Grenzen verändere.
ggplot(cars, aes(x=cars$speed,y=cars$dist)) +
+ scale_x_continuous(expand = c(0, 0)) +
+ scale_y_continuous(expand = c(0, 0), limits=c(-20,116)) + geom_smooth()
Warning message:
Removed 1 rows containing non-finite values (stat_smooth).
Beachten Sie die Warnmeldung; Ich komme darauf zurück.
Sehen Sie, wie das graue Konfidenzintervall jetzt geht nur auf etwa 104 bis? Ich vermute, das ist, weil die geom_smooth
Funktion einen der ursprünglichen Datenpunkte verworfen hat, weil es außerhalb des Bereichs liegt, und das die Glättungsberechnung geändert hat. (In der Tat ist einer der Bremsdistanzen 120.) Ich nehme an, dass das die Warnmeldung bedeutet.
Wie kann ich das umgehen? Der verschwendete Platz in der ursprünglichen Handlung ist kein großes Problem, aber mit meinen eigenen Daten hätte ich viel verschwendeten Raum. Muss ich die Glättungsformel separat berechnen und dann mit geom_ribbon
und geom_line
plotten?
Es gibt eine Option für geom_smooth
, fullrange=TRUE
, die Sie verwenden können, wenn Ihre X-Achsen-Grenzwerte nicht alle Daten enthalten. Aber das funktioniert hier nicht, und es gibt keine fulldomain=TRUE
Option.
EDIT: Das Problem hier beschriebenen unterscheidet sich von dem in ggplot2: geom_smooth confidence band does not extend to edge of graph, even with fullrange=TRUE beschrieben (auch wenn die Lösung im wesentlichen die gleiche ist). Bei diesem Problem handelt es sich um das graue Konfidenzintervall abgeschnitten. Dieses Problem betrifft die Glättungslinie, und das Intervall wurde durch die Achsengrenzen geändert. Ich weiß nicht, dass jemand, der nach einer Lösung für dieses Problem sucht, wahrscheinlich erkennen würde, dass das andere Problem dieselbe Lösung hat; Es war nur zufällig, dass ich es tat.
@beetroot Ich habe eine Erklärung hinzugefügt, warum dieses Problem anders ist. – mhwombat
Ich sehe wirklich keinen Unterschied, der groß genug ist, um dies zu rechtfertigen. – beetroot