Position_fill函数等效于ggvis?

时间:2014-10-21 14:00:20

标签: r ggplot2 ggvis

尝试在ggvis中复制ggplot函数position="fill"。我在结果的呈现中一直使用这个方便的功能。可重复的示例在ggplot2 + ggvis代码中成功执行。是否可以使用scale_numeric函数完成?

library(ggplot2)
p <- ggplot(mtcars, aes(x=factor(cyl), fill=factor(vs)))
p+geom_bar()
p+geom_bar(position="fill")

library(ggvis)
q <- mtcars %>%
  ggvis(~factor(cyl), fill = ~factor(vs))%>%
  layer_bars()

# Something like this?
q %>% scale_numeric("y", domain = c(0,1))

1 个答案:

答案 0 :(得分:0)

我认为要用ggvis做这种事情,你必须在将数据发送到ggvis之前进行大量数据整形提升。 ggplot2的geom_bar可以为你做很多计算(计算内容,加权等等),你需要在ggvis中明确地做。所以尝试类似下面的内容(可能有更优雅的方式):

mtcars %>%
   mutate(cyl=factor(cyl), vs=as.factor(vs)) %>%
   group_by(cyl, vs) %>%
   summarise(count=length(mpg)) %>%
   group_by(cyl) %>%
   mutate(proportion = count / sum(count)) %>%
   ggvis(x= ~cyl, y = ~proportion, fill = ~vs) %>%
   layer_bars()

enter image description here