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,在看起来是正确的位置是行不通的.
Using the plot()
function in R, I'm trying to produce a scatterplot of points of the form (SaleDate,SalePrice) = (saldt,sapPr)
from a time-series, cross-section real estate sales dataset in dataframe format. My problem concerns labels for the X-axis. Just about any series of annual labels would be adequate, e.g. 1999,2000,...,2013 or 1999-01-01,...,2013-01-01. What I'm getting now, a single label, 2000, at what appears to be the proper location won't work.
以下是我对 plot()
的调用:
The following is my call to 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")
xlim
和 ylim
被调用来限定要绘制的数据的日期和价格范围;注意价格绘制为 000 美元.r12rgr0$saldt
真的是一个日期;str(r12rgr0$saldt)
返回:
The xlim
and ylim
are called out to bound the date and price ranges of the data to be plotted; note prices are plotted as $000s. r12rgr0$saldt
really is a date; str(r12rgr0$saldt)
returns:
Date[1:4190], format: "1999-10-26" "2013-07-06" "2003-08-25" NA NA "2000-05-24" xx
我在这里查看了几个关于类似问题的线程,发现解决方案可能在于关闭默认的 X 轴行为并使用axis.date,但是我)在我目前的 R 技能水平上,我不是我肯定能够解决这个问题,并且 ii) 我想知道为什么绘图默认值会产生这些令人费解的(至少对我来说)结果?
I have reviewed several threads here concerning similar questions, and see that the solution probably lies with turning off the default X-axis behavior and using axis.date, but i) At my current level of R skill, I'm not sure I'd be able to solve the problem, and ii) I wonder why the plotting defaults are producing these rather puzzling (to me, at least) results?
Addl Observations:Y 轴标签正好是 100, 200,..., 600.散点图的一般外观表明正在观察要求的日期范围并且绘制点的相对位置是正确的.将 xlim=
... 替换为 xlim=c("1999-01-01","2014-01-01")
Addl Observations: The Y-axis labels are just fine 100, 200,..., 600. The general appearance of the scatterplot indicates the called-for date ranges are being observed and the relative positions of the plotted points are correct. Replacing xlim=
... as above with 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"))
都会导致错误消息.
推荐答案
使用绘图很难在没有样本数据的情况下重现结果.这是我将使用的示例
With plots it's very hard to reproduce results with out sample data. Here's a sample I'll use
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
If i wanted more control, I could use axis.Date
as you alluded to
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
只会放大绘图的一部分.它不直接连接到轴标签,但轴标签会调整以提供一个漂亮"的范围来覆盖绘制的数据.只是做
note that xlim
will only zoom in parts of the plot. It is not directly connected to the axis labels but the axis labels will adjust to provide a "pretty" range to cover the data that is plotted. Doing just
xlim=c(as.Date("1999-01-01"),as.Date("2014-01-01"))
是缩放绘图的正确方法.无需转换为数字或 POSIXct.
is the correct way to zoom the plot. No need for conversion to numeric or POSIXct.
这篇关于R X 轴日期标签使用 plot()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!