2014-09-05 20 views
55

Jeśli określisz ograniczenia osi w ggplot, punkty oddalone zostaną usunięte. To jest w porządku dla punktów, ale możesz chcieć narysować linie, które przecinają się z określonym zakresem, ale metody ggplota range lub xlim/ylim je usuwają. Czy istnieje inny sposób określania zakresu osi wykresu bez usuwania zbędnych danych?Ograniczanie osi ggplot2 bez usuwania danych (limity zewnętrzne): powiększ

np.

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) 

Odpowiedz

90

Hadley wyjaśnia to na str. 99; 133 jego ggplot2 book (1st edition) lub pp 160 -. 161, jeśli masz second edition

Kwestia jest taka, że ​​jak mówisz limits wewnątrz skali lub ustawienie ylim przyczyny dane do wyrzucenia, ponieważ są one ograniczać dane. Aby uzyskać prawdziwy zoom (zachować wszystkie dane), musisz ustawić granice wewnątrz kartezjańskiego układu współrzędnych. Na więcej zobacz: 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

Co jeśli coord_cartesian nie jest opcją, ponieważ używam 'geom_boxplot'? – Everettss