R 如何在条形图中显示不同的变量,并动态选择任意或更多变量
我有这个data.frame: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
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()