使用ggvis(layer_points over layer_boxplots)

时间:2015-11-10 13:46:41

标签: r ggplot2 visualization ggvis

我正试图在一个箱线图上分层。点和箱图都来自相同的数据源:db_gems_spend。唯一的区别是它们是如何过滤的(boxplot的日期范围和点的一天)。最终目标是为图表添加交互性,这样我就可以选择一个日期,并通过查看点落在特定方块图上的位置,立即查看当天与其他日期的比较。

问题是这些点目前没有与箱形图对齐。

你可以在这里看到它: enter image description here

这是代码:

db_gems_spend %>%
  filter(dayofweek == "Fri") %>% # add interactivity (automate dayofweek selection)
  filter(date >= "2015-08-01") %>% # add interactivity
  ggvis(~action_type, ~count) %>%
  layer_boxplots() %>%
  add_axis("x", title = "action_type", title_offset = 50, 
           properties = axis_props(labels = list(angle = 20, align = "left", fontSize = 10))) %>%
  add_axis("y", title = "count", title_offset = 60) %>%
  add_data(db_gems_spend) %>%
  filter(date == "2015-11-04") %>% # add interactivity
  layer_points(x = ~action_type, y = ~count, fill :=  "red")

如何让这些点对齐?

1 个答案:

答案 0 :(得分:0)

db_gems_spend %>%
  ggvis(~action_type, ~(count/total_spend)) %>%
  layer_boxplots() %>%
  add_data(db_gems_spend) %>%
  layer_points(x = ~action_type, y = ~count, fill := "red", 
    prop("x", ~action_type, scale = "xcenter"))

感谢aosmith,github上的解决方案正是我所寻找的。事实证明,如果值是分类而不是数字,ggvis会将layer_points对齐layer_boxplots的左侧,除非您指定上面的最后一行代码。