如何根据Shiny中的selectInput显示不同的图像?

时间:2016-10-28 13:14:39

标签: r image shiny

我有一个应用程序,显示人口模型,下拉菜单选择物种。将渲染该物种模型的图,现在我想要该图旁边的物种图像。 当日期或位置发生变化时,情节会发生变化,但旁边的图像只会对选择的物种输入作出反应。

我为它编写了这段代码:

ui <- fluidPage(
 # ... rest of the code
  wellPanel(
    fluidRow(
      column(3, selectInput("populatie", label = h4("Populatie"), 
                        choices = list("PERENBLADVLO" = "PER", "OORWORM" = "OOR", "FLUWEELMIJT" = "FLU"),
                        selected = "PER"),
             imageOutput("img1")), # here is the image
      column(9, plotOutput("plot2"))
    )
  )
)

server <- function(input, output){
 # ... rest of the code
  output$img1 <- renderImage({
    if(input$populatie == "PER"){            
      img(height = 240, width = 300, src = "PBV.jpg")
    }                                        
    else if(input$populatie == "OOR"){
      img(height = 240, width = 300, src = "OW.jpg")
    }
    else if(input$populatie == "FLU"){
      img(height = 240, width = 300, src = "FM.jpg")
    }
  })
 # ... rest of the code
}

我得到的是一个错误,说“无效的文件名参数”。 虽然没有选择,但我可以自己渲染图像。

思想?

2 个答案:

答案 0 :(得分:1)

我知道这是很久以前的事了,但这是其他人稍后看这个的原因:

如果您可以在ui函数中读取图像,则可以使用ImageOutput()renderImage(),因为它们不依赖于用户输入..否则(大多数情况下)如果您& #39;重新阅读服务器功能中的图片,并且您阅读的图片取决于您使用uiOutput()renderUI()

的用户输入

希望这是有道理的!

答案 1 :(得分:0)

我仍然不太明白为什么会这样,但我找到了一个解决方案:

当我使用uiOutput()renderUI({})代替imageOutputrenderImage({})时,它可以正常工作。 其余的代码仍然是相同的。