【问题标题】:Invalid input: date_trans works with objects of class Date only无效输入:date_trans 仅适用于 Date 类的对象
【发布时间】:2017-04-07 15:17:56
【问题描述】:

使用 ggplot2 和 shiny 通过为日期范围提供两个输入选择来实现这一点,并让绘图相应地调整 x(日期值),但是,我在下面收到此错误:

Invalid input: date_trans works with objects of class Date only

我该如何解决这个问题?下面是我的代码:

library(shiny)
library(ggplot2)
library(dplyr)



data <- read.csv("C:/Users/user/Documents/R/R-3.3.1/R CODE/MyData2.csv", header = TRUE) # reading .csv
newdata <- as.data.frame(data) # converting csv to DF
newdata$event_date <- as.factor(newdata$event_date)

str(newdata)

ui <- fluidPage(

  selectInput("select", label = h3("Select Model"), 
              choices = list("Toyota Camry", "Nissan Altima")),

  dateInput("strtdate", "Select start date:"),

  dateInput("enddate", "Select end date:"),

  plotOutput("hist")
)

server <- function(input, output) {

  output$hist <- renderPlot({

    df <- newdata %>% select(event_date,PlatformName,total_events) %>% filter(PlatformName == input$select) %>% group_by(event_date, PlatformName) %>% summarize(total_events = sum(total_events))

    gg <- ggplot(df, aes(x= event_date, y = total_events, group =PlatformName)) +
      geom_line(aes(color = PlatformName)) +


      labs(title="Total Events vs. Time", x="Event Dates", y="Total Events") +

                aes(xmin = input$strtdate, 
                    xmax = input$enddate) +


      theme(plot.title=element_text(size=20, face="bold", hjust = 0.5),
            axis.text.x=element_text(size=10, angle=90,hjust=1,vjust=0.5),
            axis.text.y=element_text(size=5),
            axis.title.x=element_text(size=10),
            axis.title.y=element_text(size=10)) 

    print(gg)

  })
}

shinyApp(ui = ui, server = server)

【问题讨论】:

  • 在寻求帮助时,您应该在示例输入数据中包含 reproducible example。如果您的数据中有日期值,请确保将它们解析为日期(它们有 class() DatePOSIXct 或其他东西)。现在你似乎在让它们成为因素,这不会让 R 更容易理解。

标签: r ggplot2 shiny


【解决方案1】:

解决了这个问题。只需要将特定日期列转换为日期格式即可。

通过:

newdata$event_date <- as.Date(newdata$event_date)

因此,新代码:

library(shiny)
library(ggplot2)
library(dplyr)



data <- read.csv("C:/Users/user/Documents/R/R-3.3.1/R CODE/MyData2.csv", header = TRUE) # reading .csv
newdata <- as.data.frame(data) # converting csv to DF


newdata$event_date <- as.factor(newdata$event_date) #CODE IMPLEMENTAITON


str(newdata)

ui <- fluidPage(

  selectInput("select", label = h3("Select Model"), 
              choices = list("Toyota Camry", "Nissan Altima")),

  dateInput("strtdate", "Select start date:"),

  dateInput("enddate", "Select end date:"),

  plotOutput("hist")
)

server <- function(input, output) {

  output$hist <- renderPlot({

    df <- newdata %>% select(event_date,PlatformName,total_events) %>% filter(PlatformName == input$select) %>% group_by(event_date, PlatformName) %>% summarize(total_events = sum(total_events))

    gg <- ggplot(df, aes(x= event_date, y = total_events, group =PlatformName)) +
      geom_line(aes(color = PlatformName)) +


      labs(title="Total Events vs. Time", x="Event Dates", y="Total Events") +

                aes(xmin = input$strtdate, 
                    xmax = input$enddate) +


      theme(plot.title=element_text(size=20, face="bold", hjust = 0.5),
            axis.text.x=element_text(size=10, angle=90,hjust=1,vjust=0.5),
            axis.text.y=element_text(size=5),
            axis.title.x=element_text(size=10),
            axis.title.y=element_text(size=10)) 

    print(gg)

  })
}

shinyApp(ui = ui, server = server)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-04
    • 2021-07-30
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多