2014-10-27 80 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