簡體   English   中英

時間序列圖用x軸表示“年” - “月”表示R

[英]time series plot with x axis in “year”-“month” in R

我有一個“月度數據”我想繪制數據,以便在x軸上以格式%Y-%m" (2001-01)得到一個日期。假設我的數據是pcp <- rnorm(24)

我試過了:

PCP <- ts(pcp, frequency = 12, start = 2001)
plot(PCP) 

但是該圖在x軸上只有幾年。

如何在x軸上獲得我想要的日期格式的圖?

這是玩具數據的一個想法,因為這個問題不可重復。 希望它有所幫助

R> foo = ts(rnorm(36), frequency = 12, start = 2001)
R> plot(foo, xaxt = "n")
R> tsp = attributes(foo)$tsp
R> dates = seq(as.Date("2001-01-01"), by = "month", along = foo)
R> axis(1, at = seq(tsp[1], tsp[2], along = foo), labels = format(dates, "%Y-%m"))

產量

ggplot版本的數據看起來像你的

R> df = data.frame(date = seq(as.POSIXct("2001-01-01"), by = "month", length.out = 36), pcp = rnorm(36))
R> library(ggplot2)
R> library(scales)
R> p = ggplot(data = df, aes(x = date, y = pcp)) + geom_line()
R> p + scale_x_datetime(labels = date_format("%Y-%m"), breaks = date_breaks("months")) + theme(axis.text.x = element_text(angle = 45))

在此輸入圖像描述

我發現優秀的xts包是存儲數據的最佳方式。 如果你沒有,你可以下載install.packages('xts')

讓我們從基礎開始 - 包括制作pcp ,因為你沒有提供它。

require(xts)
pcp <- rnorm(24)
PCP <- ts(pcp, frequency = 12, start = 2001)
plot(as.xts(PCP), major.format = "%Y-%m")

這為您提供了如下圖表。 您可以通過更改傳遞給major.format的字符串來調整日期。 例如, "%b-%y"產生2001年1月的Jan-01格式的日期。

示例情節

最好的方法是使用axis.POSIXct {graphics}這里的例子來自這個函數的幫助:

with(beaver1, {
time <- strptime(paste(1990, day, time %/% 100, time %% 100),
                 "%Y %j %H %M")
plot(time, temp, type = "l") # axis at 4-hour intervals.
# now label every hour on the time axis
plot(time, temp, type = "l", xaxt = "n")
r <- as.POSIXct(round(range(time), "hours"))
axis.POSIXct(1, at = seq(r[1], r[2], by = "hour"), format = "%H")
})

在您的情況下將格式更改為format="%Y-%m"

問候,

暫無
暫無

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

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