簡體   English   中英

為R中一周中某時間/某天發生的事件數創建日歷熱圖

[英]Creating a Calendar Heatmap for number of events that occured at a time/day of week in R

我有一個很大的時間序列數據集,其中的變量之一是保存為因素的事件的日期和時間。 我想創建一個矩陣熱圖,其中x軸顯示星期幾,y軸顯示一天中的時間,這樣我們就可以看到特定事件發生了多少事件。

我已經能夠使用Time Projection r包中的plotCalendarHeatmap來創建基於時間序列的日和月的頻率熱圖。 但是我無法繪制出近似於一周中的某天與某天的時間情景的圖表。

這是一些示例代碼,類似於在我的數據集中找到的代碼:

x <- c(1:18)
y <- factor(c("6/28/2013 7:23", "9/8/2013 17:59", "9/24/2013 10:46", "10/20/2013 18:05", "9/11/2013 17:36", "9/14/2013 23:27", "12/28/2013 6:48", "7/20/2013 17:26", "8/26/2013 7:51", "9/14/2013 9:12", "10/9/2013 22:01", "9/27/2013 16:52", "8/25/2013 8:22", "9/14/2013 23:26", "9/22/2013 18:29", "8/26/2013 21:57", "8/10/2013 13:53", "8/11/2013 17:25"))
data <- data.frame(x,y)
colnames(data) <- c("ID", "starttime")

像這樣嗎

# generate more illustrative dataset: you have this already
set.seed(1)
x <- 1:1000
y <- as.POSIXct("06/01/2013",format="%m/%d/%Y")+sample(0:(210*24*60)*60,1000)
y <- strftime(y,format="%m/%d/%Y %H:%M")
data <- data.frame(ID=x,Starttime=y)

# you start here...
library(lubridate)     # for wday(...)
library(ggplot2)
library(RColorBrewer)  # for brewer.pal(...)

data$date <- as.POSIXct(data$Starttime, format="%m/%d/%Y %H:%M")
data$dow  <- wday(data$date)
data$cdow <- wday(data$date,label=T)
data$tod  <- as.numeric(data$date - as.POSIXct(strftime(data$date,format="%Y-%m-%d")))/60
data$bins <- cut(data$tod,breaks=1:24,labels=F)
counts    <- aggregate(ID~bins+dow,data,length)
colnames(counts)[ncol(counts)] <- "Events"

ggplot(counts, aes(x=bins,y=8-dow))+
  geom_tile(aes(fill=Events))+
  scale_fill_gradientn(colours=brewer.pal(9,"YlOrRd"),
                       breaks=seq(0,max(counts$Events),by=2))+
  scale_y_continuous(breaks=7:1,labels=c("Sun","Mon","Tues","Wed","Thurs","Fri","Sat"))+
  labs(x="Time of Day (hours)", y="Day of Week")+
  coord_fixed()

暫無
暫無

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

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