2015-06-26 1 views
1

Я хочу использовать ggvis для исследования данных (потому что я знаком с ggplot2), и из-за множества групп в моих наборах данных было бы полезно выбрать и снять выделение групп для проведения различных конкретных (данных) сравнений.ggvis графика с выбором группы

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

То, что я хочу, в конце концов, это графический, с которым я могу выбрать подмножество групп с помощью радиокнопки (например). Есть ли способ сделать это? Спасибо!

ответ

2

Из documentation

Ограничения

В настоящее время интерактивные входы могут быть использованы только в двух местах:

  1. в качестве аргументов преобразований: layer_smooths(span = input_slider(0, 1))

  2. как свойства: props(size = input_slider(10, 1000))

Это означает, что интерактивные входы могут изменять только данные, а не спецификация основного участка. Другими словами, с базовыми интерактивностью не существует способа добавить или удалить слои или переключить между различными наборами данных. Это разумное ограничение, потому что если вы занимаетесь поиском, вы всегда можете создать новый ggvis с кодом R , или если вы полируете сюжет для презентации, вы можете вставить его в блестящее приложение и получить полный контроль над сценарий.


Для простого исследования данных, одна идея могла бы использовать 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 коде или с радио-кнопками в блестящем приложении) к filter() выделить определенные группы:

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

enter image description here

+0

Спасибо за ваш ответ. Я знаю, что это возможно с помощью 'filter()' - я уже делал это так, но мне хотелось что-то интерактивное, которое можно динамически изменять! – Manuel

+0

К сожалению нет - вы не можете добавить 'input_checkbox()' для фильтрации - я думаю, потому что эта функция является частью 'ggvis', а' filter() 'является функцией' dplyr'. – Manuel

+0

с гладкой блестящей, с моей точки зрения, это не проблема. но в реальной ситуации исследования данных я никогда не буду вычислять блестящее приложение. что я хочу, это что-то простое в использовании. – Manuel

Смежные вопросы