#r #shiny
#r #блестящий
Вопрос:
Используя приведенный ниже код, я получаю только текст alt. Любые предложения о том, в чем может быть проблема?
С сервера.R:
output$face <- renderImage({
list(src = "http://www.clipartbest.com/cliparts/yco/GGE/ycoGGEacE.png",
filetype = "image/png",
alt = "YOU MUST BE KIDDING ME!")
}, deleteFile = FALSE)
Из ui.R:
imageOutput("face")
Спасибо,
Чад
Добавление к объяснению проблемы — я не просто пытаюсь отобразить изображение. Скорее, я пытаюсь сделать его реактивным — и отображать другое изображение на основе входных данных… для сервера.Код R ниже:
output$imagegauge <- renderImage({
if (is.null(IRR_calc()))
return(NULL)
if (IRR_calc() > .085) {
return(list(
src = "http://www.i2symbol.com/images/abc-123/o/white_smiling_face_u263A_icon_256x256.png",
contentType = "image/png",
alt = "Smiley Face"
))
} else {
return(list(
src = "http://www.clipartbest.com/cliparts/yco/GGE/ycoGGEacE.png",
filetype = "image/png",
alt = "Sad Face"
))
}
}, deleteFile = FALSE)
Еще раз спасибо,
Чад
Ответ №1:
renderImage
принимает файл в качестве src
входных данных, а не URL. Вы можете просто включить это изображение напрямую, используя tags$img
:
library(shiny)
runApp(list(
ui = fluidPage(
titlePanel("Hello Shiny!"),
sidebarLayout(
sidebarPanel(
numericInput('n', 'Number of obs', 100),
numericInput('m', 'Select image (Happy (1) or Sad(2))', 1, min = 1, max = 2),
uiOutput('test')
),
mainPanel(
plotOutput('plot')
)
)
),
server = function(input, output) {
output$plot <- renderPlot({ hist(runif(input$n)) })
output$test <- renderUI({
images <- c("http://www.i2symbol.com/images/abc-123/o/white_smiling_face_u263A_icon_256x256.png"
, "http://www.clipartbest.com/cliparts/yco/GGE/ycoGGEacE.png")
tags$img(src= images[input$m])
})
}
))
Комментарии:
1. Спасибо. Тем не менее, я был немного упрощен в запросе. Я не просто пытаюсь отобразить изображение. Мне нужно, чтобы изображение было реактивным — отображало другое изображение на основе входных данных. Итак, я добавлю больше кода в последующем:
2. @cnblevins Я обновил свой ответ. Вам все равно нужно использовать только
img$src
вы можете создать динамическое изображение, используяrenderUI
иuiOutput
. В вашем примере внутренняя норма возврата будет определять, какое изображение отображать.