【问题标题】:ggvis - How to show different variables in barchart, and select any or more dynamicallyggvis - 如何在条形图中显示不同的变量,并动态选择任何或更多
【发布时间】:2014-12-28 17:30:00
【问题描述】:

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

【问题讨论】:

    标签: r bar-chart ggvis


    【解决方案1】:

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

    首先,您需要 2 个库来执行此操作:dplyrstringi

    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 图表(但您可以看到下拉框和那里的所有选项)。

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

    P.S.2 关于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() 
    

    希望这会有所帮助!

    【讨论】:

    • 谢谢!我正在玩代码,但是......它总是从选择一个“源”开始。谁让所有变量在开始时都被选中?使用 Shiny 会更容易吗?
    • ggvis 使用 selected 参数很容易发生这种情况。检查更新的答案。无需使用闪亮(ggvis 无论如何都在后台使用闪亮)。希望对您有所帮助!
    猜你喜欢
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多