繁体   English   中英

使用R中的日期自定义x轴标签

[英]Customize x-axis labels with dates in R

我有每小时采样的数据,并相应地绘制了数据;

    x<-c("2016-05-09 09:00:00", "2016-05-09 10:00:00", "2016-05-09 11:00:00", "2016-05-10 12:00:00")
    y<- c(2,NA,3,5)
    df<-data.frame(x,y)

    plot(df$x,df$y)

在x轴上,我只想将时间戳显示为year-month-date。 此外,我只希望每个日期显示一个标签(即使我在同一日期进行了多次测量)。 有没有办法做到这一点? 我更喜欢基本功能

亲切的问候,

我想出了一个解决方案。 也许它不是最好的,但它在这里:

我禁止绘制x轴par(xaxt ='l)的绘图,然后使用axis()创建了一个新的xaxis。 我将刻度线从1到具有测量值的总小时数(请注意,这是连续数据)按24(每天的小时数)排序,然后使用labels = c添加了自己的标签(“ 2016-05-09 “,..)在axis()中。

请注意,此解决方案有效,因为我只有约10天的数据可以显示。 我认为该方法不适用于长时间序列。

    #Hourly data
    x<-c("2016-05-09 00:00:00","2016-05-09 01:00:00", "2016-05-09 02:00:00", "2016-05-09 03:00:00", "2016-05-09 04:00:00", "2016-05-09 05:00:00","2016-05-09 06:00:00","2016-05-09 07:00:00","2016-05-09 08:00:00","2016-05-09 09:00:00","2016-05-09 10:00:00","2016-05-09 11:00:00","2016-05-09 12:00:00","2016-05-09 13:00:00","2016-05-09 14:00:00","2016-05-09 15:00:00","2016-05-09 16:00:00","2016-05-09 17:00:00","2016-05-09 18:00:00","2016-05-09 19:00:00","2016-05-09 20:00:00","2016-05-09 21:00:00","2016-05-09 22:00:00","2016-05-09 23:00:00","2016-05-10 00:00:00")
    y<-seq(1,length(x),by=1)
    df<-data.frame(x,y)

    #Suppress x-axis
    plot(df$x,df$y,xaxt='n')

    #Create new x-axis with ticks in 24 hour interval
    axis(side=1,at=seq(1,length(x),by=24),labels=c("2016-05-09","2016-05-10"))

与ggplot这样做是相当容易的,因为你可以使用scale_x_date()需要转换x的最新as.Date()

x <-
  as.Date(
    c(
      "2016-05-09 09:00:00",
      "2016-05-09 10:00:00",
      "2016-05-09 11:00:00",
      "2016-05-10 12:00:00"
    )
  )
y <- c(2, NA, 3, 5)
df <- data.frame(x, y)

library(ggplot2)
ggplot(df, aes(x = x, y = y)) + geom_line() + scale_x_date()

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM