2013-08-05 4 views
0

Я пытаюсь создать простой график набора данных через R shiny и ggplot2. Хотя сюжет прекрасен, когда я нажимаю флажок для плавного, ничего не происходит с графиком. Я использую stat_smooth() здесь. Другая проблема (не связанная с этим) заключается в том, что, хотя я добавил «options (shiny.maxRequestSize = -1)», чтобы пользователи могли загружать большие файлы, программа все равно дает мне ошибку, когда я пытаюсь загрузить что-то выше 5 MB (он просто падает). Есть идеи по этому поводу? Вот мой код:ggplot2 Почему моя гладкая функция не работает?

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

Вы проверили, что ваш участок работает в автономном режиме с помощью 'stat_smooth()'? – Marius

+0

Вы имеете в виду терминал? (Я использую R-студию). Я не уверен, как протестировать его через терминал. – jeffrey

+0

Нет, я просто имею в виду, что вы убедились, что можете получить нужный сюжет, используя некоторые данные из данных в автономном режиме, не опасаясь запускать его через Shiny. Просто пытаюсь исключить простые исправления. – Marius

ответ

0

Я нашел решение, теперь я знаю, что проверка участка в автономном режиме это первое, что вы должны сделать ... Оказывается, мне нужна группа = 1 в моей aes_string. Терминал сказал мне ошибку, когда я попробовал графику функции.

Хорошая практика: всегда старайтесь запускать свои графики в автономном режиме (без прохождения через Shiny). Мне нужно было выражение «group = 1» внутри моей функции aes моего сюжета.

Смежные вопросы