мой ggplot не появляется, используя R блестящий - PullRequest
0 голосов
/ 24 мая 2018

Я не знаю, почему мой ggplot не появляется при запуске моего приложения.Похоже, с использованием сюжета, это работает.Но, используя ggplot, ничего не появляется.Нет графика!Я попытался с print() и без него, без результата.

Мое приложение я импортирую CSV-файл и из него я строю график.Не могли бы вы помочь мне, пожалуйста?

# Сервер

server <- function(input, output, session) {
  # added "session" because updateSelectInput requires it

  data <- reactive({
    req(input$file1) # require that the input is available

    df <- read.csv(input$file1$datapath,
                       header = input$header,
                       sep = input$sep,
                       quote = input$quote)


  updateSelectInput(session, inputId = 'xcol', label = 'X Variable',
                    choices = names(df), selected = names(df)[sapply(df, is.numeric)])
  updateSelectInput(session, inputId = 'ycol', label = 'Y Variable',
                    choices = names(df), selected = names(df)[sapply(df, is.numeric)])

  return(df)

  })

  output$contents <- renderTable({
    data()
  })

  output$MyPlot <- renderPlot({
    x <- data()[, c(input$xcol, input$ycol)]

   p <- ggplot(x, aes(input$xcol,input$ycol)) 
   p <- p + geom_line() #+ geom_point()
   print(p)


    # plot(mydata, type = "l",
    #      xlab = input$xcol,
    #      ylab = input$ycol)
  })

  # Generate a summary table of the data uploaded
  output$summary <- renderPrint({
    y <- data()
    summary(y)

  })

}

# Create Shiny app
shinyApp( ui = ui, server = server)

1 Ответ

0 голосов
/ 25 мая 2018

В вашем коде было несколько проблем: input$xcol и input$ycol содержат значения символов, поэтому вы должны использовать aes_string в функции ggplot.Кроме того, вам нужно было получить свои tabsetPanel и sidebarLayout прямо (незначительная проблема).

Кроме этого, в вашем data реактиве вы используете входные данные для sep и quote, которые не найдены в вашем пользовательском интерфейсе, что вызывает ошибку.Если я их закомментирую, все работает как положено.Для тестирования я использовал write.csv(diamonds, file = "diamonds.csv"):

library(shiny)
library(ggplot2)


shinyApp(
  ui = fluidPage(
    tabsetPanel(
      tabPanel(
    "Upload File",
    titlePanel("Uploading Files"),

      fileInput(
        inputId = "file1",
        label = "Choose CSV File",
        multiple = FALSE,
        accept = c("text/csv", "text/comma-separated-values, text/plain", ".csv")
      )),

      tabPanel(
        "Plot",
        pageWithSidebar(
          headerPanel("Plot your data"),
          sidebarPanel(
            selectInput("xcol", "X Variable", ""),
            selectInput("ycol", "Y Variable", "", selected = "")
          ),
          mainPanel(plotOutput("MyPlot"))
        )
      )))

  ,

  server <- function(input, output, session) {
    # added "session" because updateSelectInput requires it

    data <- reactive({
      req(input$file1) # require that the input is available

      df <- read.csv(input$file1$datapath)#,
      # no such inputs in your UI
      #   header = input$header,
      #   sep = input$sep,
      #   quote = input$quote
      # )


      updateSelectInput(session,
        inputId = "xcol", label = "X Variable",
        choices = names(df), selected = names(df)[sapply(df, is.numeric)]
      )
      updateSelectInput(session,
        inputId = "ycol", label = "Y Variable",
        choices = names(df), selected = names(df)[sapply(df, is.numeric)]
      )

      return(df)
    })

    output$contents <- renderTable({
      data()
    })

    output$MyPlot <- renderPlot({
      x <- data()[, c(input$xcol, input$ycol)]

      p <- ggplot(x, aes_string(input$xcol, input$ycol))
      p <- p + geom_line() #+ geom_point()
      print(p)

      # plot(mydata, type = "l",
      #      xlab = input$xcol,
      #      ylab = input$ycol)
    })

    # Generate a summary table of the data uploaded
    output$summary <- renderPrint({
      y <- data()
      summary(y)
    })
  }
)

enter image description here

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