我正在尝试通过R shiny和ggplot2生成数据集的简单图形。虽然情节很好,但当我单击复选框以获得平滑时,图表没有任何反应。我在这里使用stat_smooth()。另一个问题(与此无关)是即使我添加'options(shiny.maxRequestSize = -1)'以允许用户上传大文件,当我尝试上传大于5的内容时,程序仍然会给我一个错误MB(它只是崩溃)。有什么想法吗?这是我的代码:
ui.R
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")
)
)
server.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)
})
}
答案 0 :(得分:0)
我找到了解决方案,现在我知道离线检查绘图是你应该做的第一件事......结果我在aes_string中需要一个group = 1。当我尝试绘制函数时终端告诉我错误。
良好做法:始终尝试离线运行图表(不经过Shiny)。我需要一个&#39; group = 1&#39;我的情节中的声明。