2014-09-05 7 views
55

Если вы укажете границы оси в ggplot, удаляемые точки удаляются. Это нормально для точек, но вам может потребоваться построить линии, которые пересекаются с указанным диапазоном, но методы ggplot range или xlim/ylim удаляют их. Есть ли другой способ указать диапазон оси графика без удаления внешних данных?Ограничить оси ggplot2 без удаления данных (внешние ограничения): zoom

например.

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) 

ответ

90

Хэдли объясняет это на стр. 99; 133 его ggplot2 book (1st edition) или С. 160 -. 161, если у вас есть second edition

Вопрос заключается в том, что, как вы говорите, limits внутри шкалы или установки ylim вызывает данные, которые будут выброшены, как они сдерживают данные. Для истинного масштабирования (сохранить все данные) вам необходимо установить пределы внутри декартовой системы координат. Подробнее см: 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

Что делать, если coord_cartesian это не вариант, потому что я использую 'geom_boxplot'? – Everettss