2014-09-05 15 views
55

Wenn Sie in ggplot Achsgrenzen angeben, werden die äußeren Punkte entfernt. Das ist gut für Punkte, aber Sie möchten vielleicht Linien plotten, die sich mit dem angegebenen Bereich schneiden, aber die range oder xlim/ylim Methoden von ggplot entfernen diese. Gibt es eine andere Möglichkeit, den Bereich der Zeichnungsachse anzugeben, ohne die externen Daten zu entfernen?Begrenzen von ggplot2-Achsen ohne Entfernen von Daten (außerhalb der Grenzen): zoom

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) 

Antwort

90

Hadley erklärt dies auf pp. 99; 133 seiner ggplot2 book (1st edition) oder S. 160 -. 161, wenn Sie die second edition

Das Problem ist, dass, wie Sie limits innerhalb der Waage sagen oder ylim Ursachen Einstelldaten weggeworfen werden, da sie die Daten einzuschränken. Für einen echten Zoom (alle Daten behalten) müssen Sie die Grenzen innerhalb des kartesischen Koordinatensystems festlegen. Mehr siehe: http://docs.ggplot2.org/current/coord_cartesian.html

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

enter image description here

+1

Was passiert, wenn coord_cartesian keine Option ist, weil ich 'geom_boxplot' verwenden? – Everettss