簡體   English   中英

如何用R創建時間散點圖?

[英]How to create a time scatterplot with R?

數據是一系列日期和時間。

date time
2010-01-01 09:04:43
2010-01-01 10:53:59
2010-01-01 10:57:18
2010-01-01 10:59:30
2010-01-01 11:00:44
…

我的目標是用水平軸(x)上的日期和垂直軸(y)上的時間來表示散點圖。 我想如果同一天的時間不止一次,我也可以添加顏色強度。

創建日期直方圖非常容易。

mydata <- read.table("mydata.txt", header=TRUE, sep=" ")
mydatahist <- hist(as.Date(mydata$day), breaks = "weeks", freq=TRUE, plot=FALSE)
barplot(mydatahist$counts, border=NA, col="#ccaaaa")
  1. 我還沒想出如何創建一個散點圖,其中軸是日期和/或時間。
  2. 我也希望能夠使用線性日期YYYY-MM-DD不需要軸,但也可以根據MM-DD等月份(如此不同的年份累積),或者甚至是周數輪換。

任何幫助,RTFM URI打包或提示都是受歡迎的。

ggplot2包非常容易處理日期和時間。

創建一些日期和時間數據:

dates <- as.POSIXct(as.Date("2011/01/01") + sample(0:365, 100, replace=TRUE))
times <- as.POSIXct(runif(100, 0, 24*60*60), origin="2011/01/01")

df <- data.frame(
  dates = dates,
  times = times
)

然后得到一些ggplot2魔法。 ggplot會自動處理日期,但為了正確格式化時間軸,請使用scale_y_datetime()

library(ggplot2)
library(scales)
ggplot(df, aes(x=dates, y=times)) + 
  geom_point() + 
  scale_y_datetime(breaks=date_breaks("4 hour"), labels=date_format("%H:%M")) + 
  theme(axis.text.x=element_text(angle=90))

在此輸入圖像描述


關於問題的最后部分,按周分組等:要實現這一點,您可能需要將數據預先匯總到您想要的存儲桶中。 您可以使用plyr為此,然后將結果數據傳遞給ggplot

我首先閱讀as.POSIXct,strptime,strftime和difftime。 這些和相關的功能應該允許您提取所需的數據子集。 格式化有點棘手,所以請使用幫助文件中的示例。
並且,一旦您的日期轉換為POSIX類,as.numeric()會將它們全部轉換為數值,因此易於排序,繪圖等。

編輯:安德烈建議玩w / ggplot來簡化你的軸規格是一個很好的建議。

暫無
暫無

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

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