Динамический выбор групп в 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()
Попытка 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)
Я все еще не могу понять это правильно. У меня тоже есть попробовал использовать add_legend
с аргументом layer_lines
и stroke
, чтобы посмотреть, могу ли я получить легенду, чтобы показать, какие клиенты были выбраны разными цветами, а затем иметь легенду в стороне с цветами и соответствующими именами, но это не сработало вообще. Это слишком много для ggvis
? Или я что-то совсем упустил?
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
, поскольку считаю, что это работает лучше.