Shiny 从侧边栏菜单和单选按钮中选择时不显示图表
我不知道为什么没有显示图表。我所需要的只是用户必须从侧边栏菜单中选择一个菜单项并在单选按钮中选择一个选项,当选择这些菜单项时,必须显示仪表板主体中的相应选项卡。当我试图执行这段代码时,没有任何工作,也没有抛出错误。请帮忙。还建议是否可以使用其他编码来完成此操作。 谢谢Shiny 从侧边栏菜单和单选按钮中选择时不显示图表,shiny,shinydashboard,shiny-server,shinyapps,shiny-reactivity,Shiny,Shinydashboard,Shiny Server,Shinyapps,Shiny Reactivity,我不知道为什么没有显示图表。我所需要的只是用户必须从侧边栏菜单中选择一个菜单项并在单选按钮中选择一个选项,当选择这些菜单项时,必须显示仪表板主体中的相应选项卡。当我试图执行这段代码时,没有任何工作,也没有抛出错误。请帮忙。还建议是否可以使用其他编码来完成此操作。 谢谢 ui如果您希望看到4个不同的选项卡及其自己的绘图,请定义四个反应性绘图。 然后在每个选项卡中,您有两个选择。 请参阅下面的代码 ui <- dashboardPage(#skin="purple-light&q
ui如果您希望看到4个不同的选项卡及其自己的绘图,请定义四个反应性绘图。
然后在每个选项卡中,您有两个选择。
请参阅下面的代码
ui <- dashboardPage(#skin="purple-light",
dashboardHeader(title="Testing"),
dashboardSidebar(width=200,
sidebarMenu(id= "sbar",verbatimTextOutput("text1"),verbatimTextOutput("text2"),
menuItem("Menu1", tabName = "MenuTab1",startExpanded = TRUE,
menuSubItem("Sub Menu1", tabName = "sub1"),
menuSubItem("Sub Menu2", tabName = "sub2")),
menuItem("Menu2", tabName= "MenuTab2",startExpanded = TRUE,
menuSubItem("Sub Menu3", tabName = "sub3"),
menuSubItem("Sub Menu4", tabName = "sub4")))),
dashboardBody(radioButtons("rb1",label=NULL, choices = c("choice1","choice2"), selected=NULL),
tabItems(
tabItem("sub1",title= "Tab1",fluidRow(plotOutput("plot1"))),
tabItem("sub2",title= "Tab2",fluidRow(plotOutput("plot2"))),
tabItem("sub3",title= "Tab3",fluidRow(plotOutput("plot3"))),
tabItem("sub4",title= "Tab3",fluidRow(plotOutput("plot4")))
)))
server <- function(input,output){
set.seed(1234)
observe(input$sbar)
p1 <- reactive({
req(input$rb1)
req(input$sbar)
if ( input$sbar == "sub1" && input$rb1 =="choice1" ){
return(qplot(rnorm(500),fill=I("blue"),binwidth=0.2))
}else if (input$sbar == "sub1" && input$rb1 =="choice2") {
return(qplot(rnorm(500),fill=I("red"),binwidth=0.2))
}
})
p2 <- reactive({
req(input$rb1)
req(input$sbar)
if (input$sbar == "sub2" && input$rb1 =="choice1") {
return(qplot(rnorm(500),fill=I("green"),binwidth=0.2))
}else if (input$sbar == "sub2" && input$rb1 =="choice2") {
return(qplot(rnorm(500),fill=I("brown"),binwidth=0.2))
}
})
p3 <- reactive({
req(input$rb1)
req(input$sbar)
if ( input$sbar == "sub3" && input$rb1 =="choice1" ){
return(qplot(rnorm(500),fill=I("yellow"),binwidth=0.2))
}else if (input$sbar == "sub3" && input$rb1 =="choice2") {
return(qplot(rnorm(500),fill=I("orange"),binwidth=0.2))
}
})
p4 <- reactive({
req(input$rb1)
req(input$sbar)
if (input$sbar == "sub4" && input$rb1 =="choice1") {
return(qplot(rnorm(500),fill=I("purple"),binwidth=0.2))
}else if (input$sbar == "sub4" && input$rb1 =="choice2") {
return(qplot(rnorm(500),fill=I("black"),binwidth=0.2))
}
})
observe(input$sbar)
output$text1 <- renderText(print(input$rb1))
output$text2 <- renderText(print(input$sbar))
output$plot1 <- renderPlot({p1()})
output$plot2 <- renderPlot({p2()})
output$plot3 <- renderPlot({p3()})
output$plot4 <- renderPlot({p4()})
}
shinyApp(ui = ui, server = server)
ui我确实按照您的建议进行了更改,但尚未绘制图表,也看不到逐字输出(text1)或text2。事实上,我需要使用menuSubItem和radioButton值来显示标题为tab1或tab2或tab3或tab4的tabItem。。。。在仪表板主体中。这些选项卡中的每一个都具有实时的fluidRows和多个图表。因此,如果我使用上述建议,这将只满足dashboarBody中的tab1选择。如何使用if条件显示所需的选项卡,而不是仅显示一个选项卡(即tab1)。请帮忙。
ui <- dashboardPage(#skin="purple-light",
dashboardHeader(title="Testing"),
dashboardSidebar(width=200,
sidebarMenu(id= "sbar",verbatimTextOutput("text1"),verbatimTextOutput("text2"),
menuItem("Menu1", tabName = "MenuTab1",startExpanded = TRUE,
menuSubItem("Sub Menu1", tabName = "sub1"),
menuSubItem("Sub Menu2", tabName = "sub2")),
menuItem("Menu2", tabName= "MenuTab2",startExpanded = TRUE,
menuSubItem("Sub Menu3", tabName = "sub3"),
menuSubItem("Sub Menu4", tabName = "sub4")))),
dashboardBody(radioButtons("rb1",label=NULL, choices = c("choice1","choice2"), selected=NULL),
tabItems(
tabItem("sub1",title= "Tab1",fluidRow(plotOutput("plot1"))),
tabItem("sub2",title= "Tab2",fluidRow(plotOutput("plot2"))),
tabItem("sub3",title= "Tab3",fluidRow(plotOutput("plot3"))),
tabItem("sub4",title= "Tab3",fluidRow(plotOutput("plot4")))
)))
server <- function(input,output){
set.seed(1234)
observe(input$sbar)
p1 <- reactive({
req(input$rb1)
req(input$sbar)
if ( input$sbar == "sub1" && input$rb1 =="choice1" ){
return(qplot(rnorm(500),fill=I("blue"),binwidth=0.2))
}else if (input$sbar == "sub1" && input$rb1 =="choice2") {
return(qplot(rnorm(500),fill=I("red"),binwidth=0.2))
}
})
p2 <- reactive({
req(input$rb1)
req(input$sbar)
if (input$sbar == "sub2" && input$rb1 =="choice1") {
return(qplot(rnorm(500),fill=I("green"),binwidth=0.2))
}else if (input$sbar == "sub2" && input$rb1 =="choice2") {
return(qplot(rnorm(500),fill=I("brown"),binwidth=0.2))
}
})
p3 <- reactive({
req(input$rb1)
req(input$sbar)
if ( input$sbar == "sub3" && input$rb1 =="choice1" ){
return(qplot(rnorm(500),fill=I("yellow"),binwidth=0.2))
}else if (input$sbar == "sub3" && input$rb1 =="choice2") {
return(qplot(rnorm(500),fill=I("orange"),binwidth=0.2))
}
})
p4 <- reactive({
req(input$rb1)
req(input$sbar)
if (input$sbar == "sub4" && input$rb1 =="choice1") {
return(qplot(rnorm(500),fill=I("purple"),binwidth=0.2))
}else if (input$sbar == "sub4" && input$rb1 =="choice2") {
return(qplot(rnorm(500),fill=I("black"),binwidth=0.2))
}
})
observe(input$sbar)
output$text1 <- renderText(print(input$rb1))
output$text2 <- renderText(print(input$sbar))
output$plot1 <- renderPlot({p1()})
output$plot2 <- renderPlot({p2()})
output$plot3 <- renderPlot({p3()})
output$plot4 <- renderPlot({p4()})
}
shinyApp(ui = ui, server = server)