Эквивалент функции Position_fill в ggvis?

Попытка воспроизвести функцию ggplot position="fill" в ggvis. Я постоянно использую эту удобную функцию при представлении результатов. Воспроизводимый пример успешно выполнен в коде 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))

person Ewen    schedule 21.10.2014    source источник


Ответы (1)


Я думаю, что для того, чтобы делать такие вещи с ggvis, вы должны выполнить тяжелую работу по изменению формы данных, прежде чем отправлять их в ggvis. ggplot2's 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()

введите здесь описание изображения

person Peter Ellis    schedule 07.03.2015