与Rshiny中的复选框交互以获得重叠绘图

与Rshiny中的复选框交互以获得重叠绘图,r,shiny,R,Shiny,我正在努力绘制两个重叠图,并添加复选框,以便在我的Rshiny应用程序中显示它们。我正在使用以下代码: library(shiny) library(shinyjs) mpgData <- mtcars ui <- fluidPage( # Application title titlePanel("Test"), # Sidebar with checkboxes to select plot sidebarLayout( sideb

我正在努力绘制两个重叠图,并添加复选框,以便在我的Rshiny应用程序中显示它们。我正在使用以下代码:

library(shiny)
library(shinyjs) 


mpgData <- mtcars

ui <- fluidPage(

  # Application title

  titlePanel("Test"),


  # Sidebar with checkboxes to select plot

  sidebarLayout(



    sidebarPanel(


      helpText("Select type of plot:"),

      checkboxGroupInput("checkPlot", 

                         label = ("Plots"), 

                         choices=c("Baseline","Scenario A"),

                         selected = c("Baseline","Scenario A")

      )

  ),

  mainPanel(
     textOutput("overview"),

      plotOutput("plot")
  )

  )

)

server <- function(input, output, session) {


  #get Check group input (type of plot)

  checkedVal <- reactive({

    as.vector(input$checkPlot)


  }) 

  #plot
  output$plot <- renderPlot({

    if(("Baseline" %in% checkedVal()) & ("Scenario A" %in% checkedVal()))

       # first plot
       plot(mpgData$mpg, mpgData$cyl, type='l',col="steelblue",ylim=range(c(mpgData$cyl,mpgData$disp)))

       # second plot
       par(new = TRUE)
       plot(mpgData$mpg, mpgData$disp, type = "l",col="red", ylim=range(c(mpgData$cyl,mpgData$disp)), axes = FALSE, xlab = "", ylab = "")


    if ("Baseline" %in% checkedVal())

   plot(mpgData$mpg, mpgData$cyl, type='l',col = "steelblue")

    if ("Scenario A" %in% checkedVal())


      plot(mpgData$mpg, mpgData$disp, type='l',col = "red")

  })


}


shinyApp(ui, server)
库(闪亮)
图书馆(shinyjs)

mpgData如果试图在现有图形上添加基线,可以使用lines函数,如下所示。虽然对于您的特定数据集,基线与原始绘图相比实际上可以忽略不计,但您需要使用“base”以外的包,如“ggplot”

library(shiny)
library(shinyjs) 


mpgData <- mtcars

ui <- fluidPage(

  # Application title

  titlePanel("Test"),


  # Sidebar with checkboxes to select plot

  sidebarLayout(



    sidebarPanel(


      helpText("Select type of plot:"),

      checkboxGroupInput("checkPlot", 

                         label = ("Plots"), 

                         choices=c("Baseline","Scenario A"),

                         selected = c("Baseline","Scenario A")

      )

    ),

    mainPanel(
      textOutput("overview"),

      plotOutput("plot")
    )

  )

)

server <- function(input, output, session) {


  #get Check group input (type of plot)

  checkedVal <- reactive({
    as.vector(input$checkPlot)
  }) 

  #plot


  # first plot
  output$plot <- renderPlot({

    if(("Baseline" %in% checkedVal()) & ("Scenario A" %in% checkedVal()))
    {   plot(mpgData$mpg, mpgData$cyl, type='l',col="steelblue",ylim=range(c(mpgData$cyl,mpgData$disp)))
      lines(mpgData$mpg, mpgData$disp, type = "l",col="red")
    }
    else if("Baseline" %in% checkedVal())
    {   
      plot(mpgData$mpg, mpgData$cyl, type='l',col = "steelblue")
    }
    else if("Scenario A" %in% checkedVal())
    {
      plot(mpgData$mpg, mpgData$disp, type='l',col = "red")
    }
  })




}


shinyApp(ui, server)
库(闪亮)
图书馆(shinyjs)

非常感谢你!这项工作非常完美…如果我的需求发生变化,我将调查ggplot。