ggplot 折线图,x 轴为天数,y 轴为时钟时间
ggplot line graph with days on x-axis and clock time on y-axis
我想说明按不同调查阶段(T1、T2、T3)分组的每天平均睡眠时间。
这是我的数据框的示例:
structure(list(code = c("AJH27", "AJH27", "AJH27", "AJH27", "AJH27",
"AJH27"), slt = c("22:10:00", "21:22:00", "22:00:00", "21:50:00",
"20:55:00", "21:55:00"), day = c("Mi", "Do", "Fr", "Sa", "So",
"Mo"), tmp = c("T1", "T1", "T1", "T1", "T1", "T1")), row.names = c(NA,
-6L), class = c("tbl_df", "tbl", "data.frame"))
原始数据集包含三个以上观测值的数据。
现在我想创建一个折线图,x 轴上的天数(从周一到周日)显示调查阶段每一天的平均睡眠时间(y 轴上的时钟时间)。这将包括三个不同的行(按组着色)。
我使用 ggplot 的经验不是很丰富,我不知道如何构建我想要的图表。
编辑:
这是我使用您的代码@JonSpring 时我的图表的样子
这是一种使用 lubridate::hms
将 H:M:S 文本转换为时间段(以秒为单位)然后将其转换为小时的方法。
library(dplyr); library(lubridate); library(ggplot2)
# convert day into an ordered factor so it displays in the right order
dat$day = factor(dat$day, ordered = TRUE,
levels = c("Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"))
dat %>%
mutate(hours = as.numeric(hms(slt))/(60*60)) %>%
ggplot(aes(day, hours, color = tmp, group = tmp)) +
geom_line()
编辑:或者,为 y 轴使用时间戳:
dat %>%
mutate(hours = ymd_hms(paste("20000101", slt))) %>%
ggplot(aes(day, hours, color = tmp, group = tmp)) +
geom_line()
我想说明按不同调查阶段(T1、T2、T3)分组的每天平均睡眠时间。 这是我的数据框的示例:
structure(list(code = c("AJH27", "AJH27", "AJH27", "AJH27", "AJH27",
"AJH27"), slt = c("22:10:00", "21:22:00", "22:00:00", "21:50:00",
"20:55:00", "21:55:00"), day = c("Mi", "Do", "Fr", "Sa", "So",
"Mo"), tmp = c("T1", "T1", "T1", "T1", "T1", "T1")), row.names = c(NA,
-6L), class = c("tbl_df", "tbl", "data.frame"))
原始数据集包含三个以上观测值的数据。 现在我想创建一个折线图,x 轴上的天数(从周一到周日)显示调查阶段每一天的平均睡眠时间(y 轴上的时钟时间)。这将包括三个不同的行(按组着色)。
我使用 ggplot 的经验不是很丰富,我不知道如何构建我想要的图表。
编辑:
这是我使用您的代码@JonSpring 时我的图表的样子
这是一种使用 lubridate::hms
将 H:M:S 文本转换为时间段(以秒为单位)然后将其转换为小时的方法。
library(dplyr); library(lubridate); library(ggplot2)
# convert day into an ordered factor so it displays in the right order
dat$day = factor(dat$day, ordered = TRUE,
levels = c("Mo", "Di", "Mi", "Do", "Fr", "Sa", "So"))
dat %>%
mutate(hours = as.numeric(hms(slt))/(60*60)) %>%
ggplot(aes(day, hours, color = tmp, group = tmp)) +
geom_line()
编辑:或者,为 y 轴使用时间戳:
dat %>%
mutate(hours = ymd_hms(paste("20000101", slt))) %>%
ggplot(aes(day, hours, color = tmp, group = tmp)) +
geom_line()