Почему Boxplot появляется в RStudio вместо моего приложения Shiny? - PullRequest
1 голос
/ 30 июня 2019

У меня есть следующий код.Три графика (1-й, 2-й, 4-й) правильно отображаются в моем приложении Shiny, в то время как 3-й, который является «коробочным графиком», отсутствует.Однако это появляется в окне Plot RStudio.Что я делаю не так?

library(shiny)

ui <- fluidPage(

    fluidRow( 
        verticalLayout( 
            splitLayout(cellWidths = c("50%", "50%"), 
                        plotOutput("pt1"), 
                        plotOutput("pt2")), 
            splitLayout(cellWidths = c("50%", "50%"), 
                        plotOutput("pt3"), 
                        plotOutput("pt4"))
        )
    )
)

server <- function(input, output) {

    set.seed(1234)

    pt1 <- qplot(rnorm(600),fill=I("blue"),binwidth=0.2)
    pt2 <- qplot(rnorm(200),fill=I("blue"),binwidth=0.2)
    pt3 <- boxplot(mpg~cyl,data=mtcars, main="Cars", xlab="cyl", ylab="mpg") 
    pt4 <- qplot(rnorm(900),fill=I("blue"),binwidth=0.2)

    output$pt1 = renderPlot({pt1})
    output$pt2 = renderPlot({pt2})
    output$pt3 = renderPlot({pt3})
    output$pt4 = renderPlot({pt4})    

}

shinyApp(ui = ui, server = server)

1 Ответ

2 голосов
/ 30 июня 2019

Как вы можете видеть здесь: Как сохранить коробочный график как переменную? нам нужен небольшой трюк, чтобы сохранить коробочный график как переменную.

library(shiny)
library(ggplot2)
ui <- fluidPage(

  fluidRow( 
    verticalLayout( 
      splitLayout(cellWidths = c("50%", "50%"), 
                  plotOutput("pt1"), 
                  plotOutput("pt2")), 
      splitLayout(cellWidths = c("50%", "50%"), 
                  plotOutput("pt3"), 
                  plotOutput("pt4"))
    )
  )
)

server <- function(input, output) {

  set.seed(1234)

  pt1 <- qplot(rnorm(600),fill=I("blue"),binwidth=0.2)
  pt2 <- qplot(rnorm(200),fill=I("blue"),binwidth=0.2)
  boxplot(mpg~cyl,data=mtcars, main="Cars", xlab="cyl", ylab="mpg")
  pt3 = recordPlot()
  dev.off()

  pt4 <- qplot(rnorm(900),fill=I("blue"),binwidth=0.2)

  output$pt1 = renderPlot({pt1})
  output$pt2 = renderPlot({pt2})
  output$pt3 = renderPlot({pt3 })
  output$pt4 = renderPlot({pt4})    

}

shinyApp(ui = ui, server = server)
...