如何使用ui.R / user中的选定输入在server.R中的1个图形中绘图

时间:2015-08-18 02:39:20

标签: r plot shiny rstudio

我想根据用户在checkboxGroupInput中选择的输入来绘制我的图形。 例如在ui.R中,我将选择Item1或Item2。当选择Item1时,将出现2个conditionalPanel,然后我将选择我需要的相应选项并绘制它。

目前问题是我将所有情节都放在一个情节中,而不是绘制额外的情节。 当我选中variable4或variable5中的复选框时,会有一些额外的图而不是“叠加/叠加”效果,我也想改变它。

对不起,如果问题不是很明显或令人困惑,请随时与我澄清。

ui.R

library("shiny")

shinyUI(navbarPage(title="Title",collapsible=TRUE, inverse=TRUE,
 tabPanel("Subtitle1",
  sidebarLayout(
   sidebarPanel(
      checkboxGroupInput("variable1","Items:",
                         c("Item1","Item2"))),
  mainPanel(
   plotOutput("plot1")   
   )
  )
 ),

tabPanel("Subtitle 2",
         sidebarLayout(

             sidebarPanel(
                 radioButtons(
                     inputId="Item",
                     label="Food Selection:",
                     choices=list("Item1","Item2"),
                     selected='Item1'),
                 #only show this when Item 1 is selected
                 #user choose either 1 or 2 to display to display
                 conditionalPanel(
                     condition="input.Item == 'Item1' ",
                     radioButtons(
                         "variable2",
                         "Select Either:",
                         choices=c("Quantity"="MyQuantity1",
                                   "Values"="MyValues1"),
                         selected= "Quantity")
                                ),
                 #only show this when Item 2 is selected
                 conditionalPanel(
                     condition="input.Item == 'Item2' ",
                     radioButtons(
                         "variable3",
                         "Select Either:",
                         choices=c("Quantity"="MyQuantity2",
                                   "Values"="MyValues2"),
                         selected= "Quantity)")
                                ),
                 #only show this when Item 1 is selected
                 conditionalPanel(
                     condition="input.Item == 'Item1'",
                     checkboxGroupInput(
                         "variable4",
                         "Countries:",
                         choices=names(data.frame(MyQuantity1)),
                         selected= "World.")
                                 ),
                 #only show this panel when Item 2 is selected
                 conditionalPanel(
                     condition="input.Item == 'Item2'",
                     checkboxGroupInput(
                         "variable5",
                         "Countries:",
                         choices=names(data.frame(MyQuantity2)),
                         selected= "World.")
                                 )

                            ),
            mainPanel(
                     plotOutput("plot2") 
                         ) 
                     )
         )))

server.R

library("shiny")
setwd("C:/Users/admin/Desktop/Food_Security/R/UI & Server")
source("global.R")



shinyServer
(
function(input,output){
    output$plot1 <- renderPlot({
        x1<-get(input$variable1)
        plot(x1)
        #x<-input$variable1
        #plot.ts(x)
})

    observe({
        if (input$Item=="Item1"){

            output$plot2 <- renderPlot({
                x2<-get(input$variable2)
                plot(x2[,input$variable4])
            })
        }

        if (input$Item=="Item2"){

            output$plot2 <- renderPlot({
                x3<-get(input$variable3)
                plot(x3[,input$variable5])
            })
        }

    })
}
)

0 个答案:

没有答案