Динамический выбор групп в ggvis


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

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: С этим, Я вижу линии, но получаю странное предупреждение, если выбираю двух клиентов, и не могу сказать, какие линии кому принадлежат. Также он отбрасывает второе наблюдение model для обоих клиентов.

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

Участок 1

Попытка 2: Теперь я вроде как вижу, что происходит. Но все равно не правильно. Второй снимок сделан только с выбранными буквами " А " и "с".

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)

Участок 2

Участок 2: Вид 2

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

1 4

1 ответ:

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

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)

Вывод:

Введите описание изображения здесь

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