0

我正在尝试通过 R shiny 和 ggplot2 生成数据集的简单图形。虽然情节很好,但当我单击平滑复选框时,图形没有任何反应。我在这里使用 stat_smooth() 。另一个问题(与这个问题无关)是即使我添加了'options(shiny.maxRequestSize=-1)' 以允许用户上传大文件,当我尝试上传大于 5 的内容时程序仍然给我一个错误MB(它只是崩溃)。对此有什么想法吗?这是我的代码:

用户界面

dataset <- list('Upload a file'=c(1))

shinyUI(pageWithSidebar(



  sidebarPanel(


    fileInput('file', 'Data file'),
    radioButtons('format', 'Format', c('CSV', 'TSV')),

    checkboxInput('smooth', 'Smooth')
  )



  mainPanel( 
      plotOutput("plot")
  )
)

服务器.R

library(ggplot2)
#Increase max upload size 
options(shiny.maxRequestSize=-1)

shinyServer(function(input, output, session) {

data <- reactive({

    if (is.null(input$file))
      return(NULL)
    else if (identical(input$format, 'CSV'))
      return(read.csv(input$file$datapath))
    else
      return(read.delim(input$file$datapath))
  })

  observe({
    df <- data()
    str(names(df))
    if (!is.null(df)) {
      updateSelectInput(session, 'x', choices = names(df))
      updateSelectInput(session, 'y', choices = names(df))

    }
  })

output$plot <- renderPlot({ #Basic Plot

    if (is.null(data()))
      return(NULL)


    p <- ggplot(data(), aes_string(x=input$x, y=input$y)) + 
         geom_point(size = 3) 

    if (input$smooth)
      p <- p + stat_smooth()


    print(p)


  })
       } 
4

1 回答 1

0

我找到了解决方案,现在我知道离线检查情节是你应该做的第一件事......原来我的 aes_string 中需要一个 group = 1。当我尝试绘制函数时,终端告诉我错误。

好的做法:总是尝试离线运行你的图表(不通过 Shiny)。我需要在我的绘图的 aes 函数中添加一个 'group=1' 语句。

于 2015-06-07T03:52:27.710 回答