我有描述按日期和小时分组的一系列观察(声音水平)的数据。我想绘制每天每小时的平均声音水平,Y轴上的声音水平和X轴上的小时,以及每天的折线图。示例数据:
Hour Date SPL
1 18-May 107.9868
2 18-May 106.5656
1 19-May 107.4321
2 19-May 107.8993
我已经使用了group_by函数,但是我不确定是否可以做得更好:
spl_mean <- group_by(sound, Hour) %>%
summarize(count = n(), Mean = mean(SPL, na.rm = T))
ggplot(data=spl_mean) + geom_line(aes(x = Hour, y = Mean, group = 1), size = 2)
显然,这只是按小时给出了SPL的平均值,却没有保留“天”子组。
答案 0 :(得分:1)
使用库 dplyr 计算每小时和每天的平均值,然后使用库 ggplot2 绘制结果。
df %>%
group_by(Date, Hour) %>%
summarise(SPL_mean = mean(SPL, na.rm = T) %>%
arrange(Date, Hour) %>%
ggplot(aes(x = Hour, y = SPL_mean, color = Date) + geom_line()
答案 1 :(得分:0)
使用ggplot
,其中D为日,H为小时,V为音量。
# setup for demo
library('tidyverse')
df <- tibble(
'D' = c(1:5,1:5),
'H' = rep(c(1,2), each = 5),
'V' = rnorm(10, 100, 5))
# Figure
ggplot(data = df) +
geom_line(mapping = aes(x = H, y = V, group = D, color = D))
这是告诉它在x上执行小时,在y上执行体积,并分别绘制不同的日期。
如果您需要先获取每天和每小时的平均值,则需要按天和小时获取group_by,然后进行总结:
df %>%
group_by(D, H) %>%
summarize(MV = mean(V)) %>%
ggplot() +
geom_line(mapping = aes(x = H, y = MV, group = D, color = D))
然后通过实验室,主题,音阶等使它变得漂亮