R 根据选择的输入,堆叠的几何图形条有光泽

R 根据选择的输入,堆叠的几何图形条有光泽,r,ggplot2,shiny,R,Ggplot2,Shiny,我试图在shinny中包含一个堆叠条形图,它取决于选择的输入。它在shinny外部工作正常,但在shinny中不显示多个条 代码: 库(闪亮) 图书馆(GG2) #定义用户界面---- ui您的selectInput中的input$group是一个字符串,而不是一个变量符号。您可以使用rlang::sym>将其转换为ggplot的符号,并使用进行计算 此外,您对ggplot的审美观可以使用aes_string,并将列名称为字符串 并将correct列分别转换为一个因子 df$correct &l

我试图在
shinny
中包含一个堆叠条形图,它取决于选择的输入。它在
shinny
外部工作正常,但在
shinny
中不显示多个条

代码:

库(闪亮)
图书馆(GG2)
#定义用户界面----

ui您的
selectInput
中的
input$group
是一个字符串,而不是一个变量符号。您可以使用
rlang::sym>将其转换为ggplot的符号,并使用
进行计算

此外,您对ggplot的审美观可以使用
aes_string
,并将列名称为字符串

并将
correct
列分别转换为一个因子

df$correct <- as.factor(df$correct)

...

g2 <- ggplot(df %>% count(!!rlang::sym(input$group), correct), aes_string(x=c(input$group), y="n", fill="correct")) + 

...
df$correct
# data -----------------------------------------------------------
n<-20 #number of users
threshold <- 60 #threshold in risk score for referral to YS
df <- data.frame(age = rep(0,n),
                 gender = rep(0,n),
                 ethnicity = rep(0,n),
                 region = rep(0,n),
                 score = rep(0,n),
                 referred = rep(0,n),
                 target = rep(0,n))

df$age <- as.factor(sample(c(15,16,17),size=n,replace=TRUE))
df$gender <- as.factor(sample(c('M','F'),size=n,replace=TRUE))
df$ethnicity<- as.factor(sample(c('European','Maori','Pacific','other'),size=n,replace=TRUE))
df$region<-as.factor(sample(c('North','Mid','South'),size=n,replace=TRUE))
df$score<-runif(n,min=0,max=100)
df$target<-sample(c(0,1),size=n,replace = TRUE)

df[which(df$score>=threshold),"referred"]<-1

df$colour<-rep(0,n)
df[which(df$referred==1 & df$target==1),"colour"]<-1
df[which(df$referred==1 & df$target==0),"colour"]<-2
df[which(df$referred==0 & df$target==1),"colour"]<-3
df[which(df$referred==0 & df$target==0),"colour"]<-4

df$correct<-rep(0,n)
df[which(df$referred==0 & df$target==0),"correct"]<-1
df[which(df$referred==1 & df$target==1),"correct"]<-1
df[which(df$referred==0 & df$target==1),"correct"]<-0
df[which(df$referred==1 & df$target==0),"correct"]<-0
df$correct <- as.factor(df$correct)

...

g2 <- ggplot(df %>% count(!!rlang::sym(input$group), correct), aes_string(x=c(input$group), y="n", fill="correct")) + 

...