绘图时限制 R 中的日期范围
Limiting Date Range in R when Plotting
我试图绘制我的 data.frame
的两列(为方便起见,我们称它们为 data$Date
、data$x
)。
绘制 data$x
时,我想将自己限制在 2014-01-01
之后的数据。这样做的正确方法是什么?
您可以先将 Date
列作为 strptime
的日期,然后对 data.frame 进行子集化以仅保留日期 post 2014-01-01:
data$Date <- strptime(data$Date, format="%y%y-%m-%d")
plot(data$Date[data$Date > strptime("2014-01-01", format="%y%y-%m-%d")], data$x[data$Date > strptime("2014-01-01", format="%y%y-%m-%d")], las=1, pch=19, xlab="Date post 01/01/2014", ylab="")
例子
data <- data.frame(Date=c("2013-02-03","2013-12-13","2014-02-02","2014-05-05"), x=1:4, stringsAsFactors=F)
编辑
如果需要绘制多个“x
”,可以先用plot
,再用points
。您可以使用 axis.POSIXct
:
调整 x axis
data <- data.frame(Date=c("2013-02-03", "2013-12-13", "2014-02-02", "2014-05-05", "2015-04-14"), x1=rep(1, 5), x2=rep(2, 5), stringsAsFactors=F)
data$Date <- strptime(data$Date, format="%y%y-%m-%d")
plot(data$Date[data$Date > strptime("2014-01-01", format="%y%y-%m-%d")], data$x1[data$Date > strptime("2014-01-01", format="%y%y-%m-%d")], las=1, pch=19, col="red", xlab="Date post 01/01/2014", ylab="", xaxt="n", ylim=c(0,3))
points(data$Date[data$Date > strptime("2014-01-01", format="%y%y-%m-%d")], data$x2[data$Date > strptime("2014-01-01", format="%y%y-%m-%d")], pch=19, col="blue")
axis.POSIXct(1, at=seq(strptime("2014-02-01",format="%y%y-%m-%d"),strptime("2015-04-01",format="%y%y-%m-%d"), by = "month"), format = "%m/%y")
如果您的数据框将日期存储为标准日期类型,您还可以使用日期类型在绘图中设置 xlim 选项,例如:
xlim<-c(as.Date("20140101","%Y%m%d"),as.Date("20180801","%Y%m%d"))
plot(data$Date,data$x,xlim=xlim)
我试图绘制我的 data.frame
的两列(为方便起见,我们称它们为 data$Date
、data$x
)。
绘制 data$x
时,我想将自己限制在 2014-01-01
之后的数据。这样做的正确方法是什么?
您可以先将 Date
列作为 strptime
的日期,然后对 data.frame 进行子集化以仅保留日期 post 2014-01-01:
data$Date <- strptime(data$Date, format="%y%y-%m-%d")
plot(data$Date[data$Date > strptime("2014-01-01", format="%y%y-%m-%d")], data$x[data$Date > strptime("2014-01-01", format="%y%y-%m-%d")], las=1, pch=19, xlab="Date post 01/01/2014", ylab="")
例子
data <- data.frame(Date=c("2013-02-03","2013-12-13","2014-02-02","2014-05-05"), x=1:4, stringsAsFactors=F)
编辑
如果需要绘制多个“x
”,可以先用plot
,再用points
。您可以使用 axis.POSIXct
:
x axis
data <- data.frame(Date=c("2013-02-03", "2013-12-13", "2014-02-02", "2014-05-05", "2015-04-14"), x1=rep(1, 5), x2=rep(2, 5), stringsAsFactors=F)
data$Date <- strptime(data$Date, format="%y%y-%m-%d")
plot(data$Date[data$Date > strptime("2014-01-01", format="%y%y-%m-%d")], data$x1[data$Date > strptime("2014-01-01", format="%y%y-%m-%d")], las=1, pch=19, col="red", xlab="Date post 01/01/2014", ylab="", xaxt="n", ylim=c(0,3))
points(data$Date[data$Date > strptime("2014-01-01", format="%y%y-%m-%d")], data$x2[data$Date > strptime("2014-01-01", format="%y%y-%m-%d")], pch=19, col="blue")
axis.POSIXct(1, at=seq(strptime("2014-02-01",format="%y%y-%m-%d"),strptime("2015-04-01",format="%y%y-%m-%d"), by = "month"), format = "%m/%y")
如果您的数据框将日期存储为标准日期类型,您还可以使用日期类型在绘图中设置 xlim 选项,例如:
xlim<-c(as.Date("20140101","%Y%m%d"),as.Date("20180801","%Y%m%d"))
plot(data$Date,data$x,xlim=xlim)