首页 文章

如何在R中使用ggplot2绘制timeDate?

提问于
浏览
0
library(timeDate)
library(ggplot2)
library(ggrepel)

dataset1$TimeStamp <- timeDate(dataset1$TimeStamp, format = "%Y/%m/%d   %H:%M:%S", zone = "GMT", FinCenter = "GMT")

p1 <- ggplot(dataset1, aes(x = TimeStamp, y = y1))

p1 + 
geom_point() + 
geom_text_repel(aes(label = Label1), size = 3)

注意:当执行上面的代码时我会看到下一个:不知道如何自动选择timeDate类型的对象的比例 . 违约持续 . 错误:geom_point需要以下缺失的美学:x

如何在ggplot中使用timeDate类?

1 回答

  • 0

    可能ggplot不知道如何处理 timeDate 类 . 您只需将 TimeStamp@Data 插槽中的值插入ggplot即可:

    dataset1 <- data.frame(TimeStamp = sample(1:100,50,replace = T), 
                           y1=sample(1:50,50,replace=T),
                           Label1 = sample(LETTERS[1:5],50,replace=T)
                           )
    dataset1$TimeStamp <- timeDate(dataset1$TimeStamp, 
                                   format = "%Y/%m/%d %H:%M:%S", 
                                   zone = "GMT", 
                                   FinCenter = "GMT"
                                   )
    str(dataset1$TimeStamp)
    
    # Formal class 'timeDate' [package "timeDate"] with 3 slots
    # ..@ Data     : POSIXct[1:100], format: "1970-01-01 00:00:09" "1970-01-01 00:00:05" "1970-01-01 00:00:06" ...
    # ..@ format   : chr "%Y-%m-%d %H:%M:%S"
    # ..@ FinCenter: chr "GMT"
    
    str(dataset1$TimeStamp@Data)
    
    # Dates in POSIXct format are storred in @Data slot
    # POSIXct[1:100], format: "1970-01-01 00:00:09" "1970-01-01 00:00:05" "1970-01-01 00:00:06" "1970-01-01 00:00:04" ...
    
    ggplot(dataset1, aes(x = TimeStamp@Data, y = y1, colour = Label1)) +
      geom_point() + 
      geom_text_repel(aes(label = Label1, colour = Label1), size = 3) +
      theme_dark() +
      labs(x="Time Stamp", y = "Value") +
      scale_colour_discrete(guide = F)
    

    enter image description here

相关问题