3

试图在 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))
4

1 回答 1

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()

在此处输入图像描述

于 2015-03-07T02:25:10.653 回答