R水平堆积ggvis Barplot

cde*_*man 5 r bar-chart ggvis

使用这个小数据集:

df <- structure(list(colour = structure(c(1L, 2L, 1L, 2L), .Label = c("Black", 
"White"), class = "factor"), variable = c("A", "A", "B", "B"), 
    value = c(1, 2, 0.74, 0.85)), row.names = c(NA, -4L), .Names = c("colour", 
"variable", "value"), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

我可以轻松创建一个垂直堆叠的条形图 ggvis

library(ggvis)
df %>%
  ggvis(x=~variable, y=~value, fill=~colour) %>%
  group_by(colour) %>%
  layer_bars()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但我无法弄清楚如何有一个水平堆叠的条形图.我想我不知何故应该使用,layer_rects但到目前为止我能得到的最好只是一组绘制.

df %>%
  ggvis(x =~value, y=~variable, fill =~ colour) %>%
  group_by(colour) %>%
  layer_rects(x2 = 0, height = band())
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Ste*_*pré 6

那是因为layer_bars()自动堆叠,layer_rects()没有.您需要明确使用堆栈compute_stack().

df %>%
  ggvis(y = ~variable, fill = ~colour) %>%
  compute_stack(stack_var = ~value, group_var = ~variable) %>% 
  layer_rects(x = ~stack_lwr_, x2 = ~stack_upr_, height = band()) 
Run Code Online (Sandbox Code Playgroud)

这使:

在此输入图像描述


注意:查看此代码,您可能想知道stack_lwr_stack_upr_参数的来源.看一下源代码,了解它是如何工作的