【问题标题】:What is the correct way of drawing stacked area plots in ggvis?在ggvis中绘制堆积面积图的正确方法是什么?
【发布时间】:2014-10-27 16:05:41
【问题描述】:

我正在尝试使用新的 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_pathslayer_ribbons 都给我错误的结果。

我玩过路径和丝带的道具,但我不知道如何告诉ggvis 绘制堆叠在一起的区域。

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

【问题讨论】:

    标签: r plot ggvis


    【解决方案1】:

    我认为您需要同时指定 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)
    

    【讨论】:

    • 我实际上一直在寻找一种方法来自动转换数据以进行堆叠,但我想手动进行转换也可以。感谢您显示要使用的确切语法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    相关资源
    最近更新 更多