2015-10-21 20 views
5

Sử dụng tập dữ liệu nhỏ này:R ngang Stacked ggvis Barplot

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

tôi có thể dễ dàng tạo ra một barplot xếp chồng lên nhau dọc với ggvis

library(ggvis) 
df %>% 
    ggvis(x=~variable, y=~value, fill=~colour) %>% 
    group_by(colour) %>% 
    layer_bars() 

enter image description here

Nhưng tôi không thể tìm ra cách để có một thanh ngang xếp chồng lên nhau. Tôi nghĩ rằng tôi bằng cách nào đó phải sử dụng layer_rects nhưng tốt nhất tôi có thể nhận được cho đến nay chỉ là một nhóm được vẽ.

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

enter image description here

Trả lời

6

Đó là bởi vì layer_bars() ngăn xếp tự động, layer_rects() không. Bạn cần phải rõ ràng về các ngăn xếp bằng cách sử dụng 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()) 

Mà cho:

enter image description here


Lưu ý: Nhìn vào mã này, bạn có thể tự hỏi nơi stack_lwr_stack_upr_ đối số đến từ. Hãy xem qua số source code để xem cách hoạt động của thiết bị hoạt động dưới mui xe

+1

Tuyệt vời, chính xác những gì tôi cần. Cảm ơn – cdeterman

Các vấn đề liên quan