Limite de eixos ggplot2 sem remover dados (limites externos): zoom

Se você especificar os limites do eixo em ggplot, os pontos periféricos serão removidos. Isso é bom para pontos, mas você pode querer plotar linhas que se cruzam com o intervalo especificado, mas os methods range ou xlim/ylim removem. Existe outra maneira de especificar o intervalo do eixo de plotagem sem remover dados periféricos?

por exemplo

 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) 

    Hadley explica isso nas pp. 99; 133 de seu livro ggplot2 (1ª edição) , ou pp. 160 – 161 se você tiver a segunda edição

    A questão é que, como você diz limits dentro da escala ou configuração, o ylim faz com que os dados sejam descartados, já que eles estão restringindo os dados. Para um zoom real (mantenha todos os dados), você precisa definir os limites dentro do sistema de coordenadas cartesianas. Para mais informações, consulte: http://docs.ggplot2.org/current/coord_cartesian.html

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

    insira a descrição da imagem aqui