Здравствуйте, я новичок в RShiny и пытаюсь создать приложение для проекта.
У меня есть 5 изображений в пользовательском интерфейсе. Я хотел бы сделать их кликабельными: когда вы нажимаете на изображение, оно отображает подмножество фрейма данных в главной панели.
Мой Dataframe содержит столбец под названием «Настроение», и в нем есть 5 настроений («Вечеринка и танцы», «Рэп», «Веселые флюиды», «Sunday Chillout» и «Roadtrip musi c») , Каждое изображение должно отображать ряды одного из настроений.
Это код, который я использовал сейчас:
UI.R
shinyUI(
fluidPage( useShinyjs(),
headerPanel(
h1(img(src="logo.png",height = 70, width = 70),"Quelle est votre humeur du moment ?",
style = "font-weight: 500; color: #FFFFFF;")),
dashboardSidebar(
fluidRow(
column(width=11.9, align="center",
selectInput("Mood", label= "Choose your Mood : ",
choices = test$Mood),
img(id="my_img1",src="party.jfif",width="19.5%",style="cursor:pointer;"),
img(id="my_img2",src="cluster 2.jpg",width="19.5%",style="cursor:pointer;"),
img(id="my_img3",src="roadtrip.jpg",width="19.5%",style="cursor:pointer;"),
img(id="my_img4",src="rap.jfif",width="19.5%",style="cursor:pointer;"),
img(id="my_img5",src="sunday.jpg",width="19.5%",style="cursor:pointer;")),
column(11.2, align="center",
mainPanel(br(),br(),DT::dataTableOutput("dynamic"), width = "100%"))
))))
Server.R
Пока мне только что удалось связать блок выбора с подмножеством данных, но я бы хотел избавиться от него и использовать вместо него только изображения.
shinyServer(function(input,output){
output$dynamic<- DT::renderDataTable({
data <- DT::datatable(test[test$Mood ==input$Mood, c("Song","Artist","Mood","Listen to song"), drop = FALSE], escape = FALSE)
data
})
})
Я перепробовал множество комбинаций, но все они провалились, потому что у меня нет базовых c навыков работы Shiny js.
Моя последняя попытка: (Я думал сделать это вручную для каждого изображения, но это, конечно, не работает)
shinyServer(function(input,output){
onclick("my_img1", { print(datatable(test[test$Mood =="Party and dance", c("Song","Artist","Mood","Listen to song"), drop = FALSE], escape = FALSE))})
})
Любая обратная связь будет принята с благодарностью !! Спасибо !
Вот так выглядит мой интерфейс