What is the correct way to draw stacked areas in ggvis?

I am trying to draw on a plot of a folded area using the new ggvis package.

In ggplot I managed to do this as follows:

 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

With ggvis I was able to display the same data in the same layout using bars:

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

enter image description here

But I have no idea how to tell ggvis that I want areas, not bars. layer_areas does not exist and both layer_paths and layer_ribbons give me the wrong results.

I played with props for tracks and tapes, but I can't figure out how to tell ggvis to draw areas stacked on top of each other.

What is the correct way to draw graphs by region using ggvis ?

+5
source share
1 answer

I think you need to specify both y (lower border of the tape) and y2 (upper border of the tape) for this to work. So try something like

 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

+2
source

Source: https://habr.com/ru/post/1205617/


All Articles