首页 > 解决方案 > 如何为闪亮的应用程序使用 plotmeans 或 geom_errorbar

问题描述

再会

我正在尝试为我闪亮的网页绘制平均值和 95% 的置信区间,但我似乎无法做到正确。

我想要与此类似的输出 在此处输入图像描述

我试过两种方法

  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(),而不是具有类 reactiveExpr/reactive 的 S3 对象

  1. 选项 2 是使用包中的gplotplotmeans

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)

但结果就是这个错误,

可变长度不同(为 'Data$Date' 找到)

任何帮助将不胜感激!

标签: rggplot2shinyshinyappsshiny-reactivity

解决方案


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它是一个字符串。


推荐阅读