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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何根据Shiny中的selectInput显示不同的图像?相关的知识,希望对你有一定的参考价值。

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

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

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
}

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

思考?

答案

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

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

希望这是有道理的!

另一答案

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

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

以上是关于如何根据Shiny中的selectInput显示不同的图像?的主要内容,如果未能解决你的问题,请参考以下文章

未选择值时如何更改 R Shiny 'selectInput' 值选择显示空间背景颜色?

R Shiny - 如何在 selectInput 中显示选择标签

Shiny:根据 selectInput 选择动态分配 var 名称

Shiny - 更改 selectInput() 中的选项数量

SelectInput 选项不会根据在 Shiny 中选择的 csv 文件动态填充

从 SelectInput (R Shiny) 中的分组选项列表中获取组标签