我有一个包含许多事件的数据框,每个事件都有一个时间戳。
我需要这样的二维图:x轴表示天,y轴表示一天的时间(例如小时),并且当天这小时的事件数由颜色表示(或者可能另一种方式?)相应的细胞。
首先我尝试使用
ggplot(events) +
geom_jitter(aes(x = round(TimeStamp / (3600*24)),
y = TimeStamp %% (3600*24))),
但是由于大量事件(每月超过100万),可能只能看到特定时间内发生事件的事实,而不是有多少事件(几乎所有的细胞都只是用黑色填充) 。那么,问题是 - 如何在R中创建这样的情节?
答案 0 :(得分: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)
答案 1 :(得分: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)