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)

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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.