时间序列图用x轴表示"年" - "月"表示R

mms*_*mms 14 r

我有一个"月度数据"我想绘制数据,以便我%Y-%m" (2001-01)在x轴上获得格式的日期.说我的数据是pcp <- rnorm(24).

我试过了:

PCP <- ts(pcp, frequency = 12, start = 2001)
plot(PCP) 
Run Code Online (Sandbox Code Playgroud)

但是该图在x轴上只有几年.

如何在x轴上获得我想要的日期格式的图?

Jak*_*ead 13

这是玩具数据的一个想法,因为这个问题不可重复.希望它有所帮助

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"))
Run Code Online (Sandbox Code Playgroud)

产量

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))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


ric*_*rdo 11

我发现优秀的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")
Run Code Online (Sandbox Code Playgroud)

这为您提供了如下图表.您可以通过更改传递给的字符串来调整日期major.format.例如,以2001年1月"%b-%y"Jan-01格式生成日期.

示例情节