使用Shiny中的滑块更改图像大小

时间:2014-05-16 18:53:37

标签: r slider shiny

目标:为了响应在Shiny(RStudio)中移动滑块而使图像更改大小。想想放大缩小效果。

问题:有一个错误说“basename错误(imageinfo $ src):预期的字符向量参数”。我找不到任何直接回答这个问题的东西,我不知道还有什么可以尝试的。如何将sliderInput用作server.R中的输入$ slider?

我目前的进展:我的理由是在ui.R文件中设置滑块,然后将图像的宽度作为server.R文件中的输入。

ui.R部分:

shinyUI(fluidPage(
  titlePanel("Nancy's Brainstorming"),
  sidebarLayout(

sidebarPanel(
  h3(
    strong("What is this?", style = "font-si24pt")),
  p("This is a pilot project."),
  sliderInput("slider", 
              label = "", 
              min = 100, 
              max = 300, 
              value = 200),
   imageOutput("logo", width = 200)
      )
    )
))

server.R部分:

 shinyServer(function(input, output) {

  output$logo = renderImage({
  img(src = "mylogo.png", width = input$slider)
  })
})

附加信息:当我使用img(src =“mylogo.png”,width = 200)时,图像会自动显示。另外,我这样做只是为了更好地构建Shiny应用程序。

1 个答案:

答案 0 :(得分:6)

img(src = "mylogo.png", width = input$slider)只是返回html。您可以使用renderUI代替renderImage

library(shiny)
runApp(
  list(ui = fluidPage(
    titlePanel("Nancy's Brainstorming"),
    sidebarLayout(    
      sidebarPanel(
        h3(
          strong("What is this?", style = "font-si24pt")),
        p("This is a pilot project."),
        sliderInput("slider", label = "", min = 100, max = 300, value = 200),
        uiOutput('logo')
      ),
      mainPanel(
        plotOutput("distPlot")
      ) 
    )
  ),
  server = function(input, output, session) {
    output$logo <- renderUI({
      img(src = "http://i.stack.imgur.com/mTqXa.png", width = as.integer(input$slider))
    })
  }
  )
)

enter image description here