2015-11-24 3 views
4

Итак, я пытаюсь визуализировать следующие данные, используя ggvis, потому что я хочу иметь возможность смотреть на разных клиентов и различную комбинацию клиентов. Я хотел бы использовать линейный график, а затем выбирать два или три и одновременно просматривать их на сюжете. Проблема (ы) в том, что я не могу точно сказать, какие из них я просматриваю. Каждый раз, когда я пробую что-то немного другое; Я сталкиваюсь с чем-то другим. Ниже, данные называются m3Динамический выбор групп в ggvis

customer score model 
a   0.437 1 
a   0.471 2 
a   0.036 3 
b   0.455 1 
b   0.371 2 
b   0.462 3 
c   0.280 1 
c   0.042 2 
c   0.279 3 
d   0.282 1 
d   0.470 2 
d   0.246 3 
e   0.469 1 
e   0.500 2 
e   0.303 3 
f   0.290 1 
f   0.387 2 
f   0.161 3 
g   0.075 1 
g   0.111 2 
g   0.116 3 

Попытка 1: С этим я могу увидеть линии, но я получаю странное предупреждение, если я выбираю два клиента, и я не могу сказать, какие строки принадлежат кто. Также он бросает второе наблюдение за обоими клиентами.

m3 %>% ggvis(x=~factor(model),y=~score)%>% 
    filter(customer == eval(input_select(choices = as.character(m3$customer),multiple=TRUE,label='Select which Domains to view'))) %>% 
    layer_lines() 

Plot 1

Попытка 2: Теперь я могу любопытное видеть то, что происходит. Однако все еще не так. Второй снимок - только с выбранными 'a' и 'c'.

m3 %>% ggvis(x=~factor(model),y=~score)%>% 
    filter(customer == eval(input_select(choices = as.character(m3$customer),multiple=TRUE,label='Select which Domains to view'))) %>% 
    layer_lines() %>% layer_text(text:= ~customer) 

Plot 2

Plot 2: View 2

Я до сих пор не могу получить это право. Я также пробовал использовать add_legend с layer_lines и аргументом stroke, чтобы узнать, могу ли я получить легенду, чтобы показать, какие клиенты были выбраны разными цветами, а затем добавить легенду в сторону с цветами и соответствующими именами, но это не так Не работай вообще. Это слишком много для ggvis? Или я совсем чего-то не хватает?

ответ

3

Попробуйте это:

m3 %>% 
     #group by customer in order to separate them 
     group_by(customer) %>% 
     #the normal ggvis call 
     ggvis(x=~factor(model),y=~score) %>% 
     #filter in the same way that you did 
     #but add unique in order to pick one customer 
     #also make sure you use %in% instead of == in order to 
     #select multiple customers. == was the reason for the warning you received 
     #in your code 
     filter(customer %in% eval(input_select(choices = unique(as.character(m3$customer)), 
              multiple=TRUE, 
              label='Select which Domains to view'))) %>% 
     #add layer_paths with the stroke argument in order for 
     #different customers to have different colours (and a legend) 
     layer_paths(stroke = ~customer) 

Выход:

enter image description here

Как вы можете видеть на картинке вы есть легенда со всеми клиентами, и вы можете увидеть три выбранных клиентов (b, c и d). Сюжет будет меняться каждый раз в соответствии с вашими выборами. Я также использую layer_paths вместо layer_lines, поскольку я считаю, что он работает лучше.

+2

И в случае, если OP не заметил ваши изменения, использование '% in%' в 'filter' вместо' == 'является очень важным при выборе нескольких значений. – aosmith

+0

Увы, спасибо @aosmith, что вы правы, я забыл упомянуть об этом. Я расскажу об этом в комментариях в коде, потому что действительно очень важно – LyzandeR

+0

Ahhhh имеет такой смысл сейчас! Спасибо! Это великолепно! – Hillary

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