首页 > 解决方案 > twoord.plot 轴改变

问题描述

我第一次使用 twoord.plot,我无法将时间序列数据集的 x 轴设置为年。我在不同的尺度上有两个不同的 y 轴。这是我正在使用的代码。

#Install BatchGetSymbols
install.packages('BatchGetSymbols')
library(BatchGetSymbols)

#Get data from FRED
library(quantmod)
getSymbols('CPALTT01USM661S', src = 'FRED')

library(quantmod)
getSymbols('M2SL', src = 'FRED')

#Create data sets with equal number of observations

CPI = CPALTT01USM661S["1960-01-01/2019-01-01"]
M2 = M2SL["1960-01-01/2019-01-01"]

library(plotrix)
twoord.plot(rx = time(CPI), ry = CPI, lx = time(CPI), ly = M2, 
            main = "Money Supply and Prices",
            xlim = NULL, lylim = NULL, rylim = NULL,
            mar = c(5,4,4,4), lcol = "red", rcol = "blue", xlab = "", lytickpos = NA,
            ylab = "M2", ylab.at = NA,
            rytickpos = NA, rylab = "CPI", rylab.at = NA, lpch = 1,rpch = 2,
            type = "l", xtickpos = NULL, xticklab = NULL, 
            halfwidth = 0.4, axislab.cex = 1, do.first = NULL)

这是我得到的图表。请注意,x 轴不是以年为单位的。

在此处输入图像描述

标签: rplotplotrix

解决方案


日期值(每个月的开始)在index矩阵中,因此要提取年份开始,每 12 项获取一次:

twoord.plot(rx=time(CPI), ry=CPI, lx=time(CPI),ly = M2, main="Money Supply and Prices",xlim=NULL,lylim=NULL,rylim=NULL,
            mar=c(5,4,4,4),lcol="red",rcol="blue",xlab="",lytickpos=NA,ylab="M2",ylab.at=NA,
            rytickpos=NA,rylab="CPI",rylab.at=NA,lpch=1,rpch=2,
            type="l",
            xtickpos=index(CPI)[seq(1,nrow(CPI), by=12)], #tick at year start
            xticklab=format( index(CPI)[seq(1,nrow(CPI), by=12)], "%Y"), #just year
            halfwidth=0.4, axislab.cex=1,
            do.first=NULL, las=2)   # not sure why las=2 didn't seem to work.

在此处输入图像描述


推荐阅读