I am trying to draw at stacked area plot using the new ggvis
package.
In ggplot
, I have managed to do it like this:
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" )
With ggvis
, I have managed to plot the same data in the same layout using bars:
ggvis( t, x=~as.numeric( Var1 ), y=~Freq, fill=~Var2 )
%>% group_by( Var2 )
%>% layer_bars()
But I have no idea how to tell ggvis
that I want areas, not bars. layer_areas doesn't exist, and both layer_paths
and layer_ribbons
give me wrong results.
I have played around with the props for paths and ribbons, but I can't figure out how to tell ggvis
to draw the areas stacked on top of each other.
What is the correct way of drawing stacked area plots using ggvis
?
I think you need to specify both y (the lower bound of the ribbon) and y2 (the upper bound of the ribbon) 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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With