3

我有一个包含许多事件的数据框,每个事件都有一个时间戳。

我需要一个二维图:x 轴代表天,y 轴代表一天中的时间(例如小时),并且这一天这一小时内的事件数由颜色表示(或者可能是另一种方式? ) 对应的单元格。

首先我尝试使用

     ggplot(events) + 
      geom_jitter(aes(x = round(TimeStamp / (3600*24)), 
                      y = TimeStamp %% (3600*24))), 

但由于大量事件(每月超过 100 万次),可能只能看到在特定时间有事件的事实,而不是有多少事件(几乎所有单元格都被黑色填充)。所以,问题是 - 如何在 R 中创建这样的情节?

4

2 回答 2

3

你可以制作一个 hexbin 图:

set.seed(42)
events <- data.frame(x=round(rbinom(1000,1000, 0.1)),y=round(rnorm(1000,10,3)))
library(ggplot2)
library(hexbin)
p1 <- ggplot(events,aes(x,y)) + geom_hex()
print(p1)

六边形图

于 2012-12-16T10:41:38.167 回答
2

我正在做的方式是为每个事件使用一个小的 alpha(即透明度),以便叠加事件具有更高(累积)的 alpha,从而了解叠加事件的数量:

library(ggplot2)
events <- data.frame(x=round(rbinom(1000,1000, 0.1)),y=round(rnorm(1000,10,3)))
ggplot(events)
+ geom_point(aes(x=x, y=y), colour="black", alpha=0.2)

在此处输入图像描述

另一种解决方案是将其表示为热图:

 hm <- table(events)
 xhm <- as.numeric(rownames(hm))
 yhm <- as.numeric(colnames(hm))
 image(xhm,yhm,hm)

在此处输入图像描述

于 2012-12-16T10:27:13.220 回答