如何根据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({})
而不是imageOutput
和renderImage({})
时,它工作正常。其余代码仍然相同。
以上是关于如何根据Shiny中的selectInput显示不同的图像?的主要内容,如果未能解决你的问题,请参考以下文章
未选择值时如何更改 R Shiny 'selectInput' 值选择显示空间背景颜色?
R Shiny - 如何在 selectInput 中显示选择标签
Shiny:根据 selectInput 选择动态分配 var 名称
Shiny - 更改 selectInput() 中的选项数量