R 如何在条形图中显示不同的变量,并动态选择任意或更多变量

R 如何在条形图中显示不同的变量,并动态选择任意或更多变量,r,bar-chart,ggvis,R,Bar Chart,Ggvis,我有这个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

我有这个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

经过一番研究,我想我成功了。困难的部分是在下拉菜单中包含“所有行”部分。那么,下面是:

首先,您需要两个库来完成此操作:
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
我无法上传交互式图形(我想),因此我将上传静态
all
图形(但您可以看到下拉框和所有选项)

注意:如果x轴标签无法正确显示,这是因为您需要增加图形大小(在Rstudio和浏览器上都适用)

p.S.2关于
过滤器
行如何工作的几句话:您需要
eval
输入选择
结果评估为字符串,以便与
stri\u detect\u fixed
功能匹配<代码>过滤器然后决定要使用哪些行

就这样

更新

为了在开始时选择“所有”源,您需要指定
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() 

希望这有帮助

谢谢!我在玩代码,但是…它总是从只选择一个“源代码”开始。谁来确保在开始时选择所有变量?使用Shiny会更容易?使用
selected
参数使用
ggvis
会很容易发生这种情况。检查更新的答案。无需使用shiny(无论如何,ggvis在背景中使用shiny)。希望有帮助!
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()