我正在研究使用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变量成为输入选择器项。它是否正确?有解决方案吗?
提前谢谢你。 亲切的问候
答案 0 :(得分:8)
首先,你需要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()
我无法上传交互式版本,但情节如下:
你可以选择你喜欢的类别