繁体   English   中英

R X 轴日期标签使用 plot()

[英]R X-axis Date Labels using plot()

使用 R 中的plot()函数,我试图从数据帧格式的时间序列横截面房地产销售数据集中生成(SaleDate,SalePrice) = (saldt,sapPr)形式的点的散点图。 我的问题涉及 X 轴的标签。 几乎任何系列的年度标签就足够了,例如 1999,2000,...,2013 或 1999-01-01,...,2013-01-01。 我现在得到的是,一个标签,2000,在看起来合适的位置是行不通的。

以下是我对plot()调用:

plot(r12rgr0$saldt, r12rgr0$salpr/1000, type="p", pch=20, col="blue", cex.axis=.75, 
     xlim=c(as.Date("1999-01-01"),as.Date("2014-01-01")),
     ylim=c(100,650), 
     main="Heritage Square Sales Prices $000s 1990-2014",xlab="Sale Date",ylab="$000s")

调用xlimylim来限定要绘制的数据的日期和价格范围; 注意价格绘制为 000 美元。 r12rgr0$saldt真的一个约会; str(r12rgr0$saldt)返回:

Date[1:4190], format: "1999-10-26" "2013-07-06" "2003-08-25" NA NA "2000-05-24"  xx 

我在这里查看了几个关于类似问题的线程,并看到解决方案可能在于关闭默认的 X 轴行为并使用axis.date,但是我)在我目前的 R 技能水平上,我不确定我d 能够解决问题,并且 ii) 我想知道为什么绘图默认值会产生这些令人费解的(至少对我而言)结果?

Addl Observations:Y 轴标签正好是 100、200、...、600。散点图的一般外观表明正在观察要求的日期范围,并且绘制点的相对位置是正确的。 xlim= ... 替换为xlim=c("1999-01-01","2014-01-01")

或者

xlim=c(as.numeric(as.character("1999-01-01")),as.numeric(as.character("2014-01-01")))

或者

xlim=c(as.POSIXct("1999-01-01", format="%Y-%m-%d"),as.POSIXct("2014-01-01", format="%Y-%m-%d"))

都导致错误消息。

使用绘图很难在没有样本数据的情况下重现结果。 这是我将使用的示例

dd<-data.frame(
  saldt=seq(as.Date("1999-01-01"), as.Date("2014-01-10"), by="6 mon"),
  salpr = cumsum(rnorm(31))
)

一个简单的情节

with(dd, plot(saldt, salpr))

产生几年标记

在此处输入图片说明

如果我想要更多的控制,我可以使用你提到的axis.Date

with(dd, plot(saldt, salpr, xaxt="n"))
axis.Date(1, at=seq(min(dd$saldt), max(dd$saldt), by="30 mon"), format="%m-%Y")

这使

在此处输入图片说明

请注意, xlim只会放大绘图的一部分。 它不直接连接到轴标签,但轴标签会调整以提供一个“漂亮”的范围来覆盖绘制的数据。 做只是

xlim=c(as.Date("1999-01-01"),as.Date("2014-01-01"))

是缩放绘图的正确方法。 无需转换为数字或 POSIXct。

如果您正在实时运行绘图并且不介意一些警告,则可以在绘图函数中传递例如format = "%Y-%m-%d" 例如:

plot(seq((Sys.Date()-9),Sys.Date(), 1), runif(10), xlab = "Date", ylab = "Random")

产量: 尽管:

plot(seq((Sys.Date()-9), Sys.Date(), 1), runif(10), format = "%Y-%m-%d", xlab = "Date", ylab = "Random")

产量: 有很多关于format不是图形参数的警告。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM