ggplot不显示Shiny Plot中的数据(警告:删除了包含缺失值的k行(geom_point))

时间:2016-10-08 19:33:06

标签: r csv ggplot2 shiny data-visualization

执行我的Shiny App时出现以下问题。 我正在尝试的是在ggplot中绘制一个简单的数据集。首先,geom_point()或geom_line()是否不重要,但输入数据应该是csv数据集,x轴应该按日期范围调整。

我现在的问题是,上传数据后ggplot为空:

empty ggplot

,警告信息如下:

Warning: Removed 8399 rows containing missing values (geom_point)

当我用geom_line()替换geom_point()时,它不会出现,但ggplot保持为空。

完整的csv表可以在这里下载:

https://www.dropbox.com/s/xf7qtv7u2rcqdw9/sample_sales.csv?dl=0

ui.R脚本如下:

shinyUI(pageWithSidebar(
  headerPanel("My App"),
  sidebarPanel(
    fileInput('file1', 'Choose CSV File',
              accept = c('text/csv', 'text/comma-separated-values,text/plain', '.csv')),
    tags$hr(),
    checkboxInput('header', 'Header', TRUE),
    radioButtons('sep', 'Separator',
                 c(Comma = ',',
                   Semicolon = ';',
                   Tab = '\t'),
                   'Comma'),
    radioButtons('quote', 'Quote',
                 c(None = '',
                   'Double Quote' = '"',
                   'Single Quote' = "'"),
                   'Double Quote'),
    dateRangeInput("daterange", "Date range:",
                 start = "2009-01-01",
                 end = "2012-12-30")),
    mainPanel(
      tabsetPanel(
          tabPanel("Sales", plotOutput("sales")),
          tabPanel("Category", plotOutput("category")),
          tabPanel("Table", tableOutput("contents")))
        )
    )
)

,server.R脚本如下所示:

library(ggplot2)
library(shiny)
library(lubridate)

shinyServer(function(input, output) {
    sales <- reactive({

        inFile <- input$file1

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

        read.csv(inFile$datapath, header = input$header, sep = input$sep, quote = input$quote)
    })
    range <- reactive({
        c(input$daterange[1], input$daterange[2])
    })

    output$contents <- renderTable({
            print(head(sales()))
        })
    output$sales <- renderPlot({
        sales.df <- sales()
        sales.df$Order.Date <- as.Date(sales.df$Order.Date, "%Y/%m/%d")
        sales.df$Profit <- as.numeric(sales.df$Profit)
        y.limit = c(min(sales.df$Profit), max(sales.df$Profit))
        p <- ggplot(sales.df, aes(x = Order.Date, y = Profit)) + geom_point(size = 400) + scale_x_date(limits = c(input$daterange[1], input$daterange[2]))
        print(p)
        })

    output$category <- renderPlot({
        if (is.null(input$file1)) {
        return()
        }
        print(plot(sales()$sales[16]))
    })
})

我希望你能提前帮助我

0 个答案:

没有答案