Par*_*rag 4 r image slideshow shiny
我仍在学习 R,因此请该平台的专家帮助我。
我正在尝试在 Shiny 的面板中创建 .jpg 图像的幻灯片。当我在 RStudio 中运行时,下面的代码为我提供了 RStudio 绘图窗口中的幻灯片。
folder <- "D:/Photos/Foreign Trips/2014_07_08_USA_Irvine/JulyAugust/"
file_list <- list.files(path=folder, pattern="*.jpg", full.names = TRUE)
for (j in 1:30) {
myJPG <- stack(file_list[[j]])
plotRGB(myJPG)
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将相同的代码放入 server.R 并尝试通过 ui.R 调用时,我没有看到幻灯片或任何图像被显示。单击“照片幻灯片”选项卡时,出现空白页面。我尝试使用 renderUI、renderImage 和 renderPlot,但没有任何效果。
用户界面
tabPanel("Photo Slides",
plotOutput("trvImg")
),
Run Code Online (Sandbox Code Playgroud)
服务器
output$trvImg <- renderPlot({
folder <- "D:/Photos/Foreign Trips/2014_07_08_USA_Irvine/JulyAugust/"
file_list <- list.files(path=folder, pattern="*.jpg", full.names = TRUE)
for (j in 1:30) {
myJPG <- stack(file_list[[j]])
plotRGB(myJPG)
}
Run Code Online (Sandbox Code Playgroud)
作为一名学习者,我确信我在某个地方出错了,因此寻求您的帮助。
谢谢
Sté*_*ent 12
另一个解决方案,带有slickR包(基于slick javascript library)。
library(shiny)
library(slickR)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
####
),
mainPanel(
slickROutput("slickr", width="500px")
)
)
)
server <- function(input, output) {
output$slickr <- renderSlickR({
imgs <- list.files("D:/Photos/Foreign Trips/2014_07_08_USA_Irvine/JulyAugust/", pattern=".png", full.names = TRUE)
slickR(imgs)
})
}
# Run the application
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
library(shiny)
imgs <- list.files("D:/Photos/Foreign Trips/2014_07_08_USA_Irvine/JulyAugust/", pattern=".png", full.names = TRUE)
ui <- fluidPage(
titlePanel("Slideshow"),
sidebarLayout(
sidebarPanel(
actionButton("previous", "Previous"),
actionButton("next", "Next")
),
mainPanel(
imageOutput("image")
)
)
)
server <- function(input, output, session) {
index <- reactiveVal(1)
observeEvent(input[["previous"]], {
index(max(index()-1, 1))
})
observeEvent(input[["next"]], {
index(min(index()+1, length(imgs)))
})
output$image <- renderImage({
x <- imgs[index()]
list(src = x, alt = "alternate text")
}, deleteFile = FALSE)
}
# Run the application
shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)
如果您想要图像下方的按钮,您可以执行以下操作:
sidebarLayout(
sidebarPanel(
# actionButton("previous", "Previous"),
# actionButton("next", "Next")
),
mainPanel(
imageOutput("image"),
fluidRow(
column(1, offset=1, actionButton("previous", "Previous")),
column(1, offset=1, actionButton("next", "Next"))
)
)
)
Run Code Online (Sandbox Code Playgroud)