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

问题描述 投票:0回答:2

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

我已经为它编写了这段代码:

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
}

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

思考?

r image shiny
2个回答
1
投票

我知道这是很久以前的事了,但这是因为以后其他人正在考虑这个问题:

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

希望这是有道理的!


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.