2016-08-17 54 views
0

我刚刚学习R Shiny,并一直在玩弄画廊中的各种示例。对于“图像输出”例如:输出标题与图片

http://shiny.rstudio.com/gallery/image-output.html

我想知道我怎样可能能够包括图像标题时,我选择的链轮或笑脸单选按钮。例如,选择“笑脸”后,我希望标题“笑脸”显示在图像下方。感谢您的帮助。以下代码也包含在上面的链接中。 (为了清楚起见,其中一些被故意删除)。谢谢

library(png) # For writePNG function 

shinyServer(function(input, output, session) { 

# A temp file to save the output. 
# This file will be automatically removed later by 
# renderImage, because of the deleteFile=TRUE argument. 
outfile <- tempfile(fileext = ".png") 

# Generate the image and write it to file 
x <- matrix(rep((0:(width-1))/(width-1), height), height, 
      byrow = TRUE) 
y <- matrix(rep((0:(height-1))/(height-1), width), height) 
pic <- gauss2d(x, y, input$r) 
writePNG(pic, target = outfile) 

# Return a list containing information about the image 
list(src = outfile, 
    contentType = "image/png", 
    width = width, 
    height = height, 
    alt = "This is alternate text") 

}, deleteFile = TRUE) 


# image2 sends pre-rendered images 
output$image2 <- renderImage({ 
if (is.null(input$picture)) 
    return(NULL) 

if (input$picture == "face") { 
    return(list(
    src = "images/face.png", 
    contentType = "image/png", 
    alt = "Face" 
)) 
} else if (input$picture == "chainring") { 
    return(list(
    src = "images/chainring.jpg", 
    filetype = "image/jpeg", 
    alt = "This is a chainring" 
)) 
} 

}, deleteFile = FALSE) 
}) 







shinyUI(fluidPage(
titlePanel("Client data and query string example"), 

fluidRow(
column(4, wellPanel(
    sliderInput("r", "Radius :", min = 0.05, max = 1, 
       value = 0.2, step = 0.05), 
    radioButtons("picture", "Picture:", 
       c("chainring", "face")) 
)), 
column(4, 
    imageOutput("image1", height = 300), 
    imageOutput("image2") 
) 
) 

回答

0

这有帮助吗?

ui.R

library(shiny) 
    shinyUI(fluidPage(
     titlePanel("Image title"), 
     sidebarLayout(
     sidebarPanel(
       sliderInput("obs", "Number of observations:", 
          min = 0, max = 1000, value = 500) 
     ), 
     mainPanel(
       imageOutput("myImage"), 
       uiOutput("text") 

     ) 
    ) 
    )) 

server.R

library(shiny) 

    shinyServer(function(input, output) { 

      output$myImage <- renderImage({ 
        outfile <- tempfile(fileext='.png') 

        png(outfile, width=400, height=300) 
        hist(rnorm(input$obs), main = "") 
        dev.off() 

        list(src = outfile, 
         contentType = 'image/png', 
         width = 400, 
         height = 300, 
         alt = "This is alternate text") 
      }, deleteFile = TRUE) 
      histogramTitle <- reactive({ 
        paste("<h5>", input$obs, " observation used to create the histogram</h5>", sep = "") 
      }) 
      output$text <- renderUI({ 
        HTML(as.character(histogramTitle())) 
      }) 
    })