【发布时间】:2019-02-07 10:04:22
【问题描述】:
我有一个数据集,其中包含一天中特定时间发生的事件。我想制作每小时事件的直方图。我抬头一望 R - emulate the default behavior of hist() with ggplot2 for bin width 和 R hist vs geom_hist break points 这让我走到了这一步,但这仍然不是我想要的。我试过这个:
library(ggplot2)
set.seed(1)
df1 = data.frame(t=as.integer(rnorm(100, 25, 8)) / 2) %% 24
ggplot(data=df1, aes(x=t)) +
geom_histogram(binwidth=1, colour="steelblue4", fill="steelblue") +
stat_bin(binwidth = 1, aes(label=..count..), vjust=-0.5, geom = "text") +
scale_x_continuous("Time",
breaks=seq(0, 23, by=4),
labels=c("00:00", "04:00", "08:00", "12:00", "16:00", "20:00")) +
scale_y_continuous(breaks = 0:15)
得到了这张图片:
这个直方图 1) 不正确,2) 没有显示我想要的。直方图给人的印象是在 04:00(或前后)有两个事件。当我们查看数据时,我们看到在 3.5(即 03:30)和 4.5(04:30)有一个事件。我真正想要的是显示 [00:00, 01:00)、[01:00, 02:00) ... [23:00, 24:00) 范围内事件数量的直方图。应该将 03:30 的事件分配到与 04:30 的事件不同的 bin。另外,我希望直方图跨越一整天,从 00:00 到 24:00。像这样的东西(photoshopped!):
与
一致Time <- cut(df1$t, breaks = 0:24, dig.lab = 4, right = FALSE)
as.data.frame(table(Time))
Time Freq
1 [0,1) 0
2 [1,2) 0
3 [2,3) 0
4 [3,4) 1
5 [4,5) 1
6 [5,6) 1
7 [6,7) 3
8 [7,8) 4
9 [8,9) 2
10 [9,10) 7
11 [10,11) 11
12 [11,12) 8
13 [12,13) 12
14 [13,14) 10
15 [14,15) 14
16 [15,16) 8
17 [16,17) 6
18 [17,18) 4
19 [18,19) 5
20 [19,20) 0
21 [20,21) 1
22 [21,22) 1
23 [22,23) 1
24 [23,24) 0
使用 geom_histogram() 是否有可能,如果没有,我还应该使用什么?
【问题讨论】:
-
你能指定第二列
Time显示观察的时间吗?