我想使用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))
最后我想要的是一个图形,我可以使用单选按钮(例如)选择组的子集。 有没有办法做到这一点? 谢谢!
答案 0 :(得分:2)
<强>限制强>
目前,交互式输入只能在两个地方使用:
作为变换的参数:
layer_smooths(span = input_slider(0, 1))
- 醇>
作为属性:
props(size = input_slider(10, 1000))
这意味着交互式输入只能修改数据,而不能修改数据 基础情节规范。换句话说,只有基本的 交互性无法添加或删除图层或切换 不同数据集之间。这是一个合理的限制,因为如果 你正在进行探索,你总是可以用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)
您可以将参数(直接在R代码中手动或通过Shiny应用程序中的单选按钮)传递给filter()
以隔离特定组:
dat %>%
filter(groups == 1 | groups == 3) %>%
ggvis(~x, ~y) %>% layer_points(fill = ~groups)