r-与Rshing中的复选框交互以获得重叠的绘图



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

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)

当我只想显示一个图形时,我的复选框似乎工作正常,然而,当我想在同一轴上显示两个图形时肯定会出现问题。我看到的大多数例子都有点太复杂了,我无法理解和分解,所以我很难从以前的R知识中推断,但很明显我错了

非常感谢您的帮助!

如果您试图在现有图上添加基线,可以使用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)

请告诉我这是否适合你。

最新更新