簡體   English   中英

創建一個在x軸和y軸上具有時間的圖(以R為單位)

[英]Create a plot with time on the x- and y-axis (in R)

有兩個時間點(兩次測量),我想將第一次在x軸上繪制,將第二次在y軸上繪制為點,因此我可以輕松檢查45°線以上的數據點,第二次測量是在第一次之后(對於大多數情況,但不是所有情況都為真),並評估從第一時刻起經過的時間。

因此,我有兩列帶有日期,可以將它們轉換為datedate-time對象。 我現在無法確定,哪種格式可以使情節的實現更容易。

D = data.frame(time1 = c("2007-06-22","2007-05-22","2007-05-23"), time2 = c("2007-06-22","2007-05-24","2007-06-05"))
D$time1 <- strptime(D$time1, format = "%Y-%m-%d")
D$time2 <- strptime(D$time2, format = "%Y-%m-%d")
class(D$time1)
D$time1 <- as.Date(D$time1, format = "%Y-%m-%d")
class(D$time1)

我需要一些簡單的東西:

plot(D$time1, D$time2)

但是我還需要一個可修改的版本,該版本不繪制日期,而是允許休息(周,月,年),例如月份。

在此處輸入圖片說明

非常感謝您的想法。

解決方案 :兩種版本原則上都可以工作。 我之所以選擇ggplot是因為它在標簽等方面更靈活。我事先進行了數據清理,因此在對丟失的數據進行ggplot之后,我使用了:

library( ggplot2 )
ggplot( mydata, aes(x=t0, y=t1) ) + geom_point() +
  scale_x_date(date_labels = "%b %y", date_breaks = "3 month") +
  scale_y_date(date_labels = "%b %y", date_breaks = "3 month") 

3個月對我2年的數據來說是一個不錯的休息時間。 這是我的解決方案:

在此處輸入圖片說明

您可以執行以下操作:

dates_axis <- as.Date(strptime(c("2007-01-01","2007-12-01"), format = "%Y-%m-%d"))
dates_axis <- seq.Date(dates_axis[1],dates_axis[2],"month")

oldpar <- par()
par(mar = c(6,6,1,1))
plot(dates_axis,dates_axis,
    xaxt = "n",
    yaxt = "n",
    bty = "n",
    type = "n",
    xlab = "",
    ylab = "")
axis(1, at = dates_axis, labels = months(dates_axis), las = 2)
axis(2, at = dates_axis, labels = months(dates_axis), las = 1)
points(D$time1, D$time2, pch = 20)
abline(a = 0, b = 1)
par(oldpar)

在此處輸入圖片說明

ggplot了解時間/日期數據。 就像在問題中一樣,使用Date類:

D <- data.frame( time1 = as.Date(c("2007-06-22","2007-05-22","2007-05-23")),
                time2 = as.Date(c("2007-06-22","2007-05-24","2007-06-05")) )

現在,您可以使用scale_x_datescale_y_date將其傳遞給ggplot ,以靈活地指定breaks / labels / etc:

library( ggplot2 )
ggplot( D, aes(x=time1, y=time2) ) + geom_point() +
    scale_x_date( date_labels = "%b %d", date_breaks = "1 week") +
    scale_y_date( date_labels = "%b %d", date_breaks = "1 day" )

有關更多信息,請參見?scale_x_date

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM