闪亮:渲染图的可变高度

时间:2016-01-14 15:14:15

标签: r shiny

我想把我的情节高度反应过来,因为有时候我只需要绘制一个图形,有时候只绘制两到三个图形。这是我的代码:

    output$myplot<-renderPlot({

    plot_to_draw <- data[data$code==input$code,"River_name"]

    plot(plot_to_draw)   

    number_of_plot <- length(plot_to_draw)

    },height = 500*number_of_plot)

但是闪亮只是一次读取情节的高度,所以它没有被动反应。 谢谢你的回答!

2 个答案:

答案 0 :(得分:3)

我终于想出了一个解决方案;

server.R
output$myplot<-renderPlot({ 
plot_to_draw <- data[data$code==input$code,"River_name"] 
plot(plot_to_draw) 
number_of_plot <- length(plot_to_draw) 
},height = function(){500*number_of_plot})

ui.R
plotOutput(outputId="myplot",height = "auto")

答案 1 :(得分:1)

这是我最终得到的解决方案,在我的应用程序苦苦挣扎之后,并感谢此主题中的所有人提出您的建议。请不要介意变量的名称。

在服务器部分:

  #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!!