1

我有这个data.frame:

    Campanas1     variable     sessions
1   Adwords       sumResults    69
2   Campa�as     sumResults     2
3   Directo       sumResults    10947
4   Email         sumResults    413
5   Referencias   sumResults    12991
6   SEO           sumResults    37693
7   Social Media  sumResults    5993
8   Others        sumResults    2

我用这段代码制作了一个条形图:

Sesiones_Campanas1 %>% ggvis(~Campanas1, ~sessions, fill := "red") %>% layer_bars()

问题:如何为每个/所有来源(来自 Campanas1)放置一个选择器?

我的尝试:

Sesiones_Campanas1 %>% ggvis(~Campanas1, ~sessions, fill := "red") %>%   layer_bars(input_select(label = "Fuente"),
                                                                              choices = c("Email", 
                                                                                "Directo", "Adwords",
                                                                                "Campanas1", "Referencias", "SEO",
                                                                                "Social Media"))

但我得到这个错误:

Error: length(x) not equal to 1

这就是我想要的,但具有交互性

4

1 回答 1

1

经过相当多的研究,我想我做到了。困难的部分是在下拉菜单中包含 All-rows 部分。所以,这里是:

首先,您需要 2 个库来执行此操作:dplyr并且stringi

library(dplyr)
library(stringi)

selector <- c('Adwords', 'Campanas', 'Directo', 'Email',  'Others', 'Referencias', 'SEO', 'Social_Media', 'All' = 'Adwords_Campanas_Directo_Email_Others_Referencias_SEO_Social_Media' ) 
#the selector is a vector to include all your choices

以及满足您需要的实际代码:

Sesiones_Campanas1  %>%  #the table
  ggvis(~Campanas1, ~sessions, fill := "red") %>% #the ggvis object
  filter(stri_detect_fixed(eval(input_select(choices=selector, label='Fuente' )) , Campanas1) ) %>%   #the difficult part. You need to use filter and stri_detect_fixed with the input select to get exactly what you need.
  layer_bars() #plot bars

我无法上传交互式图表(我认为),所以我将上传静态all图表(但您可以看到下拉框和所有选项)。

PS 如果 x 轴标签无法正确显示,那是因为您需要增加图形大小(适用于 Rstudio 和浏览器)

PS2 关于该filter行的工作原理的几句话:您需要evalinput_select结果评估为一个字符串,以便它可以与stri_detect_fixed函数匹配。filter然后决定使用哪些行。

就是这样!

在此处输入图像描述

更新

为了在开始时选择“所有”源,您需要指定如下selected参数:

Sesiones_Campanas1  %>% 
  ggvis(~Campanas1, ~sessions, fill := "red") %>%
  filter(stri_detect_fixed(eval(input_select(choices=selector, label='Fuente', selected='Adwords_Campanas_Directo_Email_Others_Referencias_SEO_Social_Media' )) , Campanas1) ) %>%   
  layer_bars() 

希望这可以帮助!!

于 2014-12-29T11:25:23.350 回答