这是我在苦苦使用我的应用程序后终于得到的解决方案,并感谢此线程中的所有人的好意建议。请不要介意变量的名称。
在服务器部分:
#I had to transform my imput into a data.frame, otherwise sqldf didn't work.
country12<- reactive({as.data.frame(matrix(c(input$sel_country121),1,1))})
question12<-reactive({
country121 <- country12()
sqldf("SELECT dp.Year, dp.Type_of_Product COUNT (*) as num_products12 FROM dataPanelV5 dp, country121 p WHERE dp.Country_name = p.V1 GROUP BY dp.Year, dp.Type_of_Product")})
#I use this function to calculate the number of different types of products resulting from the query, using unique() and calculating its length, as that number is the number of facets.
n_facets12<-function(){
question121<- question12()
return (500*length(unique(question121$Type_of_Product)))}
output$barplot12 <- renderPlot({
question121<-question12()
ggplot(question121,aes(x=factor(Year),y=num_products12,fill=Type_of_Product)) + geom_bar(stat="identity") + facet_grid(Type_of_Product ~ .,scales = "free_y") +
geom_text(aes(label=num_products12), vjust=-0.2, colour="black") + scale_x_discrete(breaks=question121$Year,labels=as.character(question121$Year),position = "top") + theme(legend.position="top",axis.title.y=element_blank(),axis.text.y = element_blank(),panel.grid.major.y = element_blank(),panel.grid.minor.y = element_blank()) + labs(fill="Type_of_Product", x="Year")
},height = n_facets12)
#And it works!!