簡體   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