2014-10-27 11 views
5

Sto provando a disegnare su un'area di area impilata usando il nuovo pacchetto ggvis.Qual è il modo corretto di disegnare i grafici dell'area impilata in ggvis?

In ggplot, sono riuscito a fare in questo modo:

d<- data.frame( 
    time=as.numeric(rep(1:100, 100)), 
    class=as.factor(sample(7, 100000, replace=TRUE)) 
) 

t <- as.data.frame(table(d$time, d$class)) 

ggplot(t, aes(x=as.numeric(Var1), y=Freq, fill=Var2)) + 
    geom_area(stat="identity") 

enter image description here

Con ggvis, sono riuscito a tracciare gli stessi dati nello stesso layout utilizzando bar:

ggvis(t, x=~as.numeric(Var1), y=~Freq, fill=~Var2) 
    %>% group_by(Var2) 
    %>% layer_bars() 

enter image description here

Ma non ho idea di come dire a ggvis che voglio le aree, non le barre. layer_areas non esiste e sia layer_paths sia layer_ribbons mi danno risultati errati.

Ho giocato con gli oggetti di scena per i percorsi e i nastri, ma non riesco a capire come dire a ggvis di disegnare le aree impilate l'una sull'altra.

Qual è il modo corretto di disegnare i grafici dell'area impilata utilizzando ggvis?

risposta

2

Penso che sia necessario specificare sia y (il limite inferiore del nastro) che y2 (il limite superiore del nastro) affinché funzioni. Quindi, provare qualcosa di simile

library(dplyr) 
library(ggvis) 
t %>% 
    group_by(Var1) %>% 
    mutate(to = cumsum(Freq), from = c(0, to[-n()])) %>% 
    ggvis(x=~as.numeric(Var1), fill=~Var2) %>% 
    group_by(Var2) %>% 
    layer_ribbons(y = ~from, y2 = ~to) 

enter image description here

+0

realtà stavo cercando un modo per avere i dati trasformati automaticamente per l'impilamento, ma credo che facendo la trasformazione a mano funziona anche. Grazie per aver mostrato la sintassi esatta da utilizzare. – gorgonzola