Limita gli assi ggplot2 senza rimuovere i dati (fuori dai limiti): zoom


106

Se si specificano i limiti degli assi in ggplot, i punti esterni vengono rimossi. Questo va bene per i punti, ma potresti voler tracciare linee che si intersecano con l'intervallo specificato, ma i metodi rangeo ggplot li xlim/ylimrimuove. C'è un altro modo per specificare l'intervallo dell'asse del grafico senza rimuovere i dati esterni?

per esempio

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)

Risposte:


168

Hadley lo spiega a pagina 99; 133 del suo libro ggplot2 (1a edizione) , o pp. 160-161 se hai la seconda edizione .

Il problema è che, come dici tu, limitsall'interno della scala o dell'impostazione i ylim()dati vengono gettati via, poiché limitano i dati. Per un vero zoom (conserva tutti i dati), è necessario impostare i limiti all'interno del sistema di coordinate cartesiane (o altri sistemi di coordinate https://ggplot2.tidyverse.org/reference/#section-coordinate-systems ). Per ulteriori informazioni, vedere: http://docs.ggplot2.org/current/coord_cartesian.html

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

inserisci qui la descrizione dell'immagine


2
Cosa succede se coord_cartesian non è un'opzione perché uso geom_boxplot?
Everettss

3
coord_cartesianè ancora un'opzione con geom_boxploto altri geom.
eipi10

Sì, ma non riesci a capire come creare grafici a scatole orizzontali poiché ciò richiede coord_flipe non puoi avere due coordinate.
jtr13

2
Non importa, puoi inserire gli ylim coord_flipinvece coord_cartesianche in quel caso.
jtr13
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.