0

根据Taras Kaduk的精彩博客,我正在根据存储在 Apple 的 Apple 健康应用程序中的血压测量值在 R 中绘制图表。

我根据需要更改了代码,现在我想根据时间值更改绘图的背景颜色。我添加了一个包含两个值“夜”和“日”的昼夜列(“夜”= 18:00 到 06:00 之间,“白天”从 06:00 到 18:00)。有没有办法使用这个值来切换图表中的背景颜色,使所有的夜间都变暗?或者,我可以直接使用日期时间值(x 轴),即 POSIXct 值。

我确实只找到了可以解决问题的示例,但是使用一个(或几个)固定日期值,例如:Change color background in ggplot2 - R by specific Date on x axis

这是我目前使用的数据集和代码:

Sample data (blood_pressure):
  value      type            datetime daynight         state
1    96 Diastolic 2022-01-10 07:52:48      day Hypertension 1
2   102 Diastolic 2022-01-10 07:09:58      day Hypertension 2
3   109 Diastolic 2022-01-09 19:58:56    night Hypertension 2
4   141  Systolic 2022-01-09 08:27:24      day Hypertension 1
5   146  Systolic 2022-01-10 19:09:19    night Hypertension 1


blood_pressure  %>% 
  ggplot(blood_pressure, aes(datetime, value)) + 
  geom_point()

在这里您可以看到一个示例图:

在此处输入图像描述

4

1 回答 1

0

这是使用@Henrik 数据的示例:

d = data.frame(x = seq(from = Sys.time(), by = "1 hour", len = 50), y = 1)
d$hour = as.numeric(format(d$x, "%H"))
d$hour_shade =ifelse(d$hour >= 18 | d$hour <= 6, "gray60", "gray90")
ggplot(d, aes(x, y)) + 
  geom_rect(aes(xmin = x, xmax = lead(x), ymin = -Inf, ymax = Inf,
                fill = hour_shade)) +
  geom_point() +
  scale_fill_identity()

在此处输入图像描述

于 2022-01-10T23:47:06.810 回答