我正在尝试使用新的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" )
使用ggvis
,我设法使用条形图在相同的布局中绘制相同的数据:
ggvis( t, x=~as.numeric( Var1 ), y=~Freq, fill=~Var2 )
%>% group_by( Var2 )
%>% layer_bars()
但我不知道如何告诉ggvis
我想要的是区域,而不是酒吧。 layer_areas不存在,layer_paths
和layer_ribbons
都给我错误的结果。
我玩过路径和缎带的道具,但我无法弄清楚如何告诉ggvis
绘制堆叠在彼此之上的区域。
使用ggvis
绘制堆积区域图的正确方法是什么?
答案 0 :(得分:4)
我认为您需要同时指定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)