2015-02-24 12 views
5

Esiste un modo per simulare il comportamento di ggvis layer_densities() con la funzione geom_density() di ggplot2? Cioè, rendilo così p1 come p3 (vedi sotto) senza chiamare allo xlim()? Nello specifico, preferisco la vista che attenua le code della curva di densità.Regolazione dei limiti xlim() in ggplot2 geom_density() per simulare il comportamento di ggvis layer_densities()

library(ggvis) 
library(ggplot2) 

faithful %>% 
    ggvis(~waiting) %>% 
    layer_densities(fill := "green") -> p1 

ggplot(faithful, aes(x = waiting)) + 
    geom_density(fill = "green", alpha = 0.2) -> p2 

ggplot(faithful, aes(x = waiting)) + 
    geom_density(fill = "green", alpha = 0.2) + 
    xlim(c(30, 110)) -> p3 

p1 
p2 
p3 

ggvis uscita: p1

ggplot2 "default": p2

ggplot2 "desiderata": p3

Nota: Si può fare ggvis imitano ggplot2 tramite il seguente (usando trim=TRUE), ma mi piacerebbe andare nella direzione opposta ...

faithful %>% 
    compute_density(~waiting, trim=TRUE) %>% 
    ggvis(~pred_, ~resp_) %>% 
    layer_lines() 
+0

Perché evitare l'argomento xlim? La tua preoccupazione è che la soluzione non sia abbastanza generale? –

+0

@ RomanLuštrik corretto - Sto cercando una soluzione più generale. – JasonAizkalns

risposta

6

Che ne dici di chiamare xlim, ma con i limiti definiti a livello di codice?

l <- density(faithful$waiting) 
ggplot(faithful, aes(x = waiting)) + 
    geom_density(fill = "green", alpha = 0.2) + 
    xlim(range(l$x)) 

enter image description here

Il rovescio della medaglia è la stima a doppia densità, però, in modo da tenere a mente.

Problemi correlati