ggvis图形与组选择

时间:2015-06-26 12:29:08

标签: r graphics ggvis

我想使用ggvis进行数据探索(因为我熟悉ggplot2),由于我的数据集中的许多组,能够选择和取消选择组以使其具体化(数据)比较。

set.seed(10)
dat <- data.frame(x=c(1:3,1:3),y=rnorm(6),groups=factor(rep(1:2,each=3)))
library(ggvis)

dat  %>% ggvis(~x, ~y) %>% layer_points(fill=~groups)
# i know this example does not work - but is that possible somehow?
dat  %>% ggvis(~x, ~y) %>% layer_points(fill=input_checkbox(~groups))

最后我想要的是一个图形,我可以使用单选按钮(例如)选择组的子集。 有没有办法做到这一点? 谢谢!

1 个答案:

答案 0 :(得分:2)

来自documentation

  

<强>限制

     

目前,交互式输入只能在两个地方使用:

     
      
  1. 作为变换的参数:layer_smooths(span = input_slider(0, 1))

  2.   
  3. 作为属性:props(size = input_slider(10, 1000))

  4.         

    这意味着交互式输入只能修改数据,而不能修改数据   基础情节规范。换句话说,只有基本的   交互性无法添加或删除图层或切换   不同数据集之间。这是一个合理的限制,因为如果   你正在进行探索,你总是可以用R创建一个新的ggvis   代码,或者如果你正在绘制一个用于演示的图,你可以嵌入它   在一个闪亮的应用程序,并获得对情节的完全控制。

对于简单的数据探索,一个想法可能是使用filter()

set.seed(10)
dat <- data.frame(x = c(1:5,1:5,1:5), 
                  y = rnorm(15), groups = factor(rep(1:5,each=3)))

注意:我编辑了您的初始数据集,以说明更多群组的概念

library(dplyr)
library(ggvis)

dat %>% ggvis(~x, ~y) %>% layer_points(fill = ~groups)

enter image description here

您可以将参数(直接在R代码中手动或通过Shiny应用程序中的单选按钮)传递给filter()以隔离特定组:

dat %>% 
  filter(groups == 1 | groups == 3) %>% 
  ggvis(~x, ~y) %>% layer_points(fill = ~groups)

enter image description here