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")) +
...