Begrenzen Sie die ggplot2-Achsen, ohne Daten zu entfernen (außerhalb der Grenzen): Zoom

106

Wenn Sie in ggplot Achsengrenzen angeben, werden die äußeren Punkte entfernt. Dies ist für Punkte in Ordnung, aber Sie möchten möglicherweise Linien zeichnen, die sich mit dem angegebenen Bereich schneiden, aber ggplots rangeoder xlim/ylimMethoden entfernen diese. Gibt es eine andere Möglichkeit, den Bereich der Plotachse anzugeben, ohne abgelegene Daten zu entfernen?

z.B

require(ggplot2)
d = data.frame(x=c(1,4,7,2,9,7), y=c(2,5,4,10,5,3), grp=c('a','a','b','b','c','c'))
ggplot(d, aes(x, y, group=grp)) + geom_line()
ggplot(d, aes(x, y, group=grp)) + geom_line() + scale_y_continuous(limits=c(0,7))
ggplot(d, aes(x, y, group=grp)) + geom_line() + ylim(0,7)
Geotheorie
quelle

Antworten:

168

Hadley erklärt dies auf S. 99; 133 seines ggplot2-Buches (1. Auflage) oder S. 160 - 161, wenn Sie die zweite Auflage haben .

Das Problem ist, dass, wie Sie sagen, limitsinnerhalb der Skala oder Einstellung ylim()Daten weggeworfen werden, da sie die Daten einschränken. Für einen echten Zoom (behalten Sie alle Daten bei) müssen Sie die Grenzen innerhalb des kartesischen Koordinatensystems (oder anderer Koordinatensysteme https://ggplot2.tidyverse.org/reference/#section-coordinate-systems ) festlegen . Weitere Informationen finden Sie unter: http://docs.ggplot2.org/current/coord_cartesian.html

ggplot(d, aes(x, y, group=grp)) + 
    geom_line() + 
    coord_cartesian(ylim=c(0, 7))

Geben Sie hier die Bildbeschreibung ein

Tyler Rinker
quelle
2
Was ist, wenn coord_cartesian keine Option ist, weil ich es verwende geom_boxplot?
Everettss
3
coord_cartesianist immer noch eine Option mit geom_boxplotoder anderen Geoms.
Eipi10
Ja, aber ich kann nicht herausfinden, wie man horizontale Boxplots erstellt, da dies erfordert coord_flipund Sie keine zwei Koordinaten haben können.
jtr13
2
Egal, Sie können die Ylims coord_flipanstelle von coord_cartesianin diesem Fall einstellen .
jtr13