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

使用ggplot绘制分调查阶段的星期维度平均入睡时间折线图

实现方案

1. 加载所需依赖包

library(tidyverse)
library(lubridate)
library(hms)

2. 数据预处理

首先固定星期的展示顺序避免x轴乱序,再将字符串格式的入睡时间转为可计算的时间格式,最后分组计算不同调查阶段、不同星期的平均入睡时间:

# 请将下方代码中的df替换为你自己的数据集名称
plot_data <- df %>%
  # 固定星期顺序,labels参数可将x轴显示改为中文,不需要可以删除该参数
  mutate(day = factor(day, 
                      levels = c("Mo", "Tu", "Mi", "Do", "Fr", "Sa", "So"),
                      labels = c("周一", "周二", "周三", "周四", "周五", "周六", "周日"))) %>%
  # 入睡时间字符串转为时分秒格式,支持数值计算
  mutate(slt = as_hms(slt)) %>%
  # 分组计算平均入睡时间
  group_by(tmp, day) %>%
  summarise(mean_slt = mean(slt, na.rm = TRUE), .groups = "drop")

3. 绘制折线图

ggplot(plot_data, aes(x = day, y = mean_slt, color = tmp, group = tmp)) +
  # 绘制折线
  geom_line(linewidth = 1.2) +
  # 添加数据点方便查看数值位置
  geom_point(size = 3) +
  # 调整y轴为时分显示格式,可自行添加limits参数限定y轴范围,例如limits = as_hms(c("19:00:00", "24:00:00"))
  scale_y_time(labels = scales::time_format("%H:%M"), 
               name = "平均入睡时间") +
  # 自定义图表文本
  labs(x = "星期",
       color = "调查阶段",
       title = "不同调查阶段每周各天平均入睡时间对比") +
  # 简约主题设置
  theme_bw() +
  theme(plot.title = element_text(hjust = 0.5))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:18:05