使用 ggvis 对齐多个图形(layer_points over layer_boxplots)

Align multiple graphs using ggvis (layer_points over layer_boxplots)

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

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

你可以在这里看到:

这是代码:

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

如何让这些点对齐?

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 的左侧,除非您指定上面的最后一行代码。