Si vous spécifiez des limites d'axe dans ggplot, les points périphériques sont supprimés. C'est bien pour les points, mais vous voudrez peut-être tracer des lignes qui intersectent avec la plage spécifiée, mais les méthodes range
ou xlim/ylim
De ggplot les suppriment. Existe-t-il un autre moyen de spécifier la plage d'axe du tracé sans supprimer les données périphériques?
par exemple.
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 l'explique aux pp. 99; 133 de son ggplot2 book (1ère édition) , ou pp. 160 - 161 si vous avez le deuxième édition .
Le problème est que, comme vous le dites, limits
à l’intérieur de l’échelle ou du paramètre ylim()
entraîne l’élimination des données, car elles les contraignent. Pour un véritable zoom (conserver toutes les données), vous devez définir les limites à l'intérieur du système de coordonnées cartésien (ou d'autres systèmes de coordonnées https://ggplot2.tidyverse.org/reference/#section-coordinate-systems) ). Pour plus d'informations, voir: http://docs.ggplot2.org/current/coord_cartesian.html
ggplot(d, aes(x, y, group=grp)) +
geom_line() +
coord_cartesian(ylim=c(0, 7))