Hallo Sie conditionalPanel
verwenden können, dies zu tun, es einbetten alle Ihre Bilder, sondern nur die eine, die TRUE
auf den Zustand haben wird angezeigt:
tabPanel("Live Images",
conditionalPanel(condition = "input.image_type == 'img_type1'",
img(src = "img_type1.jpeg")
),
conditionalPanel(condition = "input.image_type == 'img_type2'",
img(src = "img_type2.jpeg")
)
)
Und den Namen Ihrer Eingabe image.type
-image_type
ändern weil .
eine besondere Bedeutung in Javascript haben (wie zwischen input
und image_type
).
Wenn Sie viele Bilder haben, können Sie immer etwas tun:
tabPanel("Live Images",
lapply(X = seq_len(10), FUN = function(i) {
conditionalPanel(condition = paste0("input.image_type == 'img_type", i, "'"),
img(src = paste0("img_type", i, ".jpeg"))
)
})
)
Zum Beispiel mit Bildern aus dieser post von tsperry (Sie können es auf rbloggers finden), können Sie tun :
library("shiny")
ui <- fluidPage(
tabsetPanel(
tabPanel("Live Images",
# 50 images to display
lapply(X = seq_len(50), FUN = function(i) {
# condition on the slider value
conditionalPanel(condition = paste0("input.slider == ", i),
# images are on github
img(src = paste0("https://raw.githubusercontent.com/pvictor/images/master/",
sprintf("%04d", i), "plot.png"))
)
}),
sliderInput(inputId = "slider", label = "Value", min = 1, max = 50, value = 1,
animate = animationOptions(interval = 100, loop = TRUE))
)
)
)
server <- function(input, output) {
}
shinyApp(ui = ui, server = server)
Wenn Sie die Image-URL von der reaktiven senden, führen Sie eine Übertragung vom Server zum Client über JavaScript durch. Diese Daten müssen vom Client entpackt und zur Transformation des Dokuments verwendet werden, was Zeit kostet. Was sind Ihre Anforderungen? Muss das Bild dynamisch geladen werden? Gibt es eine begrenzte Anzahl von Bildern, die geladen werden können? – sdgfsdh
@sdgfsdh Das Bild muss dynamisch basierend auf der Benutzereingabe (Eingabe $ image.type) geladen werden, und ja, es gibt eine endliche Menge von Bildern, die geladen werden können. – maia