Traccio il seguente:
library(ggplot2) carrots <- data.frame(length = rnorm(500000, 10000, 10000)) cukes <- data.frame(length = rnorm(50000, 10000, 20000)) carrots$veg <- 'carrot' cukes$veg <- 'cuke' vegLengths <- rbind(carrots, cukes) ggplot(vegLengths, aes(length, fill = veg)) + geom_density(alpha = 0.2)
Ora dire che voglio solo tracciare la regione tra x=-5000
a 5000
, invece dell’intero intervallo.
Come lo posso fare?
Fondamentalmente hai due opzioni
scale_x_continuous(limits = c(-5000, 5000))
o
coord_cartesian(xlim = c(-5000, 5000))
Dove il primo rimuove tutti i punti dati al di fuori dell’intervallo dato e il secondo regola solo l’area visibile. Nella maggior parte dei casi non si vedrebbe la differenza, ma se si adatta qualcosa ai dati probabilmente cambierebbe i valori adattati.
Puoi anche usare la funzione abbreviata xlim
(o ylim
), che come la prima opzione rimuove i punti dati al di fuori dell’intervallo dato:
+ xlim(-5000, 5000)
Per maggiori informazioni controlla la descrizione di coord_cartesian
.
Il cheat di ggplot2
per ggplot2
rende abbastanza chiaro. Ecco una piccola sezione di quel cheatsheet:
Distribuito sotto CC BY .
Nota rapida: se usi anche coord_flip()
per capovolgere l’asse xe l’asse y, non potrai impostare limiti di intervallo usando coord_cartesian()
perché quelle due funzioni sono esclusive (vedi qui ).
Fortunatamente, questa è una soluzione semplice; imposta i tuoi limiti all’interno di coord_flip()
modo:
p + coord_flip(ylim = c(3,5), xlim = c(100, 400))
Questo modifica solo l’intervallo visibile (cioè non rimuove i punti dati).