2014-05-16 4 views
6

Ziel: Machen Sie ein Bild Größe ändern als Reaktion auf einen Schieberegler in Shiny (RStudio) verschieben. Think Zoom-in-Zoom-out-Effekt.Ändern Sie die Größe des Bildes mit einem Schieberegler in Shiny

Problem: Es gibt eine Fehlermeldung "Fehler in Basisname (imageinfo $ src): ein Zeichenvektorargument erwartet". Ich kann nichts finden, was die Frage direkt beantwortet, und ich bin mir nicht sicher, was ich sonst noch versuchen sollte. Ist es nur ein Problem damit, wie sliderInput als Eingabe $ slider in server.R verwendet wird?

Mein aktueller Fortschritt: Mein rational war den Schieber in der ui.R Datei einzurichten und dann haben die Breite des Bildes sein, der Eingang in der server.R Datei.

Der ui.R Teil:

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) 
    ) 
    ) 
)) 

Der server.R Teil:

shinyServer(function(input, output) { 

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

Zusätzliche Informationen: Das Bild zeigt sich von selbst nur gut, wenn ich img verwenden (src = "mylogo.png", Breite = 200). Außerdem mache ich das nur, um ein besseres Gefühl für die Erstellung von Shiny-Apps zu bekommen.

Antwort

5

img(src = "mylogo.png", width = input$slider) gibt gerade html zurück. Sie können renderUI anstelle von renderImage verwenden.

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

Verwandte Themen