簡體   English   中英

如何在R中繪制一年中的日出?

[英]How to plot sunrise over a year in R?

我的約會看起來像這樣:

"date", "sunrise"
2009-01-01, 05:31
2009-01-02, 05:31
2009-01-03, 05:33
2009-01-05, 05:34
....
2009-12-31, 05:29

我想在R中以“日期”為x軸,以“日出”為y軸繪制此圖。

您需要更努力地工作才能獲得R來繪制合適的圖形(即獲得合適的軸)。 假設我有與您類似的數據(為方便起見,在csv文件中:

"date","sunrise"
2009-01-01,05:31
2009-01-02,05:31
2009-01-03,05:33
2009-01-05,05:34
2009-01-06,05:35
2009-01-07,05:36
2009-01-08,05:37
2009-01-09,05:38
2009-01-10,05:39
2009-01-11,05:40
2009-01-12,05:40
2009-01-13,05:41

我們可以讀取數據並將其適當地格式化,因此R知道數據的特殊性質。 read.csv()調用包含參數colClasses因此R不會將日期/時間轉換為因子。

dat <- read.csv("foo.txt", colClasses = "character")
## Now convert the imported data to appropriate types
dat <- within(dat, {
date <- as.Date(date) ## no need for 'format' argument as data in correct format
sunrise <- as.POSIXct(sunrise, format = "%H:%M")
})
str(dat)

現在稍微有些棘手,因為R弄錯了軸(或者也許更好地說它們不是我們想要的),如果您這樣做的話

plot(sunrise ~ date, data = dat)
## or
with(dat, plot(date, sunrise))

第一個版本的兩個軸都錯了,第二個版本的日期可以正確發送,因此x軸正確了,但是y軸的標簽不正確。

因此,抑制軸的繪制,然后使用axis.FOO函數將其自己添加,其中FOODatePOSIXct

plot(sunrise ~ date, data = dat, axes = FALSE)
with(dat, axis.POSIXct(x = sunrise, side = 2, format = "%H:%M"))
with(dat, axis.Date(x = date, side = 1))
box() ## complete the plot frame

HTH

我認為您可以使用as.Dateas.POSIXct函數以正確的格式轉換兩列( as.POSIXctformat參數應設置為"%H:%M"

然后,標准plot功能應該能夠自己處理時間和日期

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM