2014-10-27 77 views
5

我正在尝试使用新的ggvis包在堆积区域绘图。在ggvis中绘制堆积面积图的正确方法是什么?

ggplot,我已经成功地做到这一点是这样的:

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

随着ggvis,我设法用条绘制在相同的布局相同的数据:

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

enter image description here

但我不知道如何告诉ggvis我想要区域,而不是酒吧。 layer_areas不存在,并且layer_pathslayer_ribbons都给了我错误的结果。

我玩过路径和缎带的道具,但我不知道如何告诉ggvis绘制堆叠在彼此顶部的区域。

使用ggvis绘制堆积区域图的正确方法是什么?

回答

2

我认为你需要指定y(色带的下边界)和y2(色带的上边界)才能工作。因此,尝试像

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

实际上,我是在寻找一种方式来对堆叠自动转换的数据,但我想这样做手工转换工作过。感谢您展示使用的确切语法。 – gorgonzola 2014-10-28 14:09:18