簡體   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