Как использовать plotmeans или geom_errorbar для приложения Shiny - PullRequest
1 голос
/ 14 апреля 2020

Добрый день

Я пытаюсь изобразить средние и 95% доверительные интервалы для моей блестящей веб-страницы, но я не могу понять, как это правильно.

Я хотел бы, чтобы результат был похож на это enter image description here

Я попробовал два метода

  1. Использование geom_errorbar Здесь я попытался создать сводную таблицу, которая рассчитывает 95% -й CI, а затем строит график оттуда , Мой код следует
ui <- fluidPage(
  titlePanel("questionnaire"),
  sidebarLayout(
    sidebarPanel(
      selectInput("question", "Choose a question",
                  colnames(Data[,3:(ncol(Data)-1)]))
    ),
    mainPanel(
      plotOutput("meanCI")
    )
  )
)

server <- function(input, output) {

  ci <- reactive({
    groupwiseMean(input$question ~ Date,
                  data   = Data,
                  conf   = 0.95,
                  digits = 3)
  })
  output$meanCI <- renderPlot(
    ggplot(ci, aes(x=Date, y=Mean)) + 
      geom_errorbar(aes(ymin=Trad.lower, ymax=Trad.upper), width=.1) +
      geom_point()

  )


}

shinyApp(ui = ui, server = server)

Но он дает мне эту ошибку:

data должен быть фреймом данных или другим объектом, который может быть изменен с помощью fortify(), а не объект S3 с классом реактивныйExpr / реактивный

Вариант 2 заключался в использовании plotmeans из пакета gplot

ui <- fluidPage(
  titlePanel("questionnaire"),
  sidebarLayout(
    sidebarPanel(
      selectInput("question", "Choose a question",
                  colnames(Data[,3:(ncol(Data)-1)]))
    ),
    mainPanel(
      plotOutput("meanCI")
    )
  )
)

server <- function(input, output) {
  output$meanCI <- renderPlot(
plotmeans(input$question~Data$Date, connect = FALSE)

  )


}

shinyApp(ui = ui, server = server)

Но в результате возникает эта ошибка,

переменной длины отличаются (найдено для ' Данные $ Дата ')

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 16 апреля 2020
library(shiny)
library(rcompanion)
library(ggplot2)

ui <- fluidPage(
  titlePanel("questionnaire"),
  sidebarLayout(
    sidebarPanel(
      selectInput("question", "Choose a question",
                  colnames(iris)[1:4])
    ),
    mainPanel(
      plotOutput("meanCI")
    )
  )
)

server <- function(input, output) {

  ci <- reactive({
    groupwiseMean(data = iris,
                  var = input[["question"]],
                  group = "Species",
                  conf   = 0.95,
                  digits = 3)
  })
  output[["meanCI"]] <- renderPlot({
    ggplot(ci(), aes(x=Species, y=Mean)) + 
      geom_errorbar(aes(ymin=Trad.lower, ymax=Trad.upper), width=.1) +
      geom_point()
  })

}

shinyApp(ui = ui, server = server)

Ваша главная ошибка - пропущенные скобки в ggplot(ci(), ....... Другой - input$question ~ Date, который не работает, потому что input$question - это строка символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...