You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何绘制按日期&小时分组的声级子组均值折线图

解决每日每小时平均声级折线图的问题

没问题!你现在的代码只按Hour单一维度分组,所以丢失了Date的子组信息。要实现每个日期对应一条折线的需求,我们需要调整分组逻辑,同时按Date和Hour计算均值,再在绘图时用Date作为分组依据。

步骤1:修正均值计算

首先,我们需要同时按Date和Hour分组,这样就能得到每个日期下每小时的平均声级:

# 先构造你的示例数据(如果已有数据框可以跳过这步)
sound <- data.frame(
  Hour = c(1, 2, 1, 2),
  Date = c("18-May", "18-May", "19-May", "19-May"),
  SPL = c(107.9868, 106.5656, 107.4321, 107.8993)
)

# 按Date和Hour分组计算均值
library(dplyr)
spl_mean <- sound %>%
  group_by(Date, Hour) %>%  # 同时按日期和小时分组
  summarize(
    Mean = mean(SPL, na.rm = TRUE),
    .groups = "drop"  # 取消分组状态,方便后续ggplot处理
  )

步骤2:绘制多折线图

接下来在ggplot中,我们把group参数设为Date,同时用color区分不同日期的折线,这样每个日期会对应一条独立的线:

library(ggplot2)
ggplot(data = spl_mean, aes(x = Hour, y = Mean)) +
  geom_line(aes(group = Date, color = Date), size = 2) +  # 按Date分组画线,颜色区分
  labs(
    x = "Hour of Day",
    y = "Average Sound Pressure Level (SPL)",
    title = "Hourly Average SPL by Date",
    color = "Date"
  ) +
  theme_minimal()

效果说明

运行这段代码后,你会看到:

  • X轴为一天中的小时数
  • Y轴为对应小时的平均声级
  • 每个日期对应一条不同颜色的折线,清晰展示每日声级随小时的变化趋势

内容的提问来源于stack exchange,提问作者brc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:07:54