ggvis - 条形图的交互式 X 轴

ggvis - Interactive X axis for bar chart

我正在考虑使用 ggvis 构建一个闪亮的应用程序。 为此,我使用了一个名为 "company" 的小型数据集。它包含员工数据,其中每一行代表一个员工。

从 ggvis 的角度来看,我正在尝试以下操作: 创建显示以下变量分布的条形图:

而不是使用以下代码创建三个不同的条形图:

#Barcharts - Role
company %>% ggvis(~Role,opacity := 0.8, fill:= "firebrick") %>%
  layer_bars() %>%
  scale_ordinal('x', domain=c('Analyst','Consultant','Software Engineer','Manager','Director'))

#Barcharts - Age
company %>% ggvis(~Age,opacity := 0.8, fill:= "firebrick") %>%
  layer_bars()

#Barcharts - Sex
company %>% ggvis(~Sex,opacity := 0.8, fill:= "firebrick") %>%    
  layer_bars()

我想创建一个允许输入选择器的 ggvis 条形图。

我试过以下代码:

company %>% ggvis(input_select(c("Sex","Role","Age"), map = as.name)) %>% layer_bars()

返回以下错误:

Error: Visual property x.update is not a variable

使用的数据为:

raw <- "Age Sex Role
35   M          Director
37   M          Director
30   M           Manager
28   M           Manager
28   F           Manager
27   M Software_Engineer
25   M        Consultant
26   M        Consultant
25   F           Analyst
25   M           Analyst
25   M           Analyst
25   M           Analyst
25   M           Analyst
25   M           Analyst
25   F           Analyst
25   F           Analyst
25   F           Analyst
24   F           Analyst
25   M           Analyst"


company = read.table(textConnection(raw), header=TRUE)

这让我相信 ggvis 不允许 x 变量成为输入选择器项。这个对吗?有解决办法吗?

提前谢谢你。 亲切的问候

首先你需要melt你的data.frame像这样:

library(reshape2)
company <- melt(company, measure.vars=c('Role','Age','Sex'))

然后以下对我有用:

#Barcharts - Age
company %>% ggvis(~value, opacity := 0.8) %>%
  #use filter to pick only the category you want
  filter(variable == eval(input_select(choices=c('Role','Age','Sex')))) %>%
  layer_bars()

我无法上传互动版,但剧情是这样的:

你可以选择你喜欢的类别