ggplot:绘制具有重复时间值的时间序列

时间:2019-12-02 10:11:51

标签: r ggplot2

我有几个小时的数据,看起来像这样:

df <- data.frame('hour' = rep(0:23, 2),
                 'mean' = rnorm(48),
                 'sd' = rnorm(48))

我希望在整个期间绘制geom_smooth()

df %>%
  ggplot(aes(y = mean, x = hour)) +
  geom_smooth(aes(y = sd))

但是,默认情况下,我的hour参数被分解为使得每小时仅出现一次,这可以看出是否添加了geom_point(),但我希望所有48个(实际上还有更多)值出现在我的x轴上 我意识到必须缺少一个唯一的论点,但找不到。

2 个答案:

答案 0 :(得分:1)

您需要定义用作date_time对象的小时,下半部分的时间是第二天。

您可以使用以下代码:

library(dplyr)
library(ggplot2)

set.seed(9876) # for reproducibility
df <- data.frame('hour' = seq(c(ISOdate(2019,12,1)), by = "hour", length.out = 48),
                 'mean' = rnorm(48),
                 'sd' = rnorm(48))

df %>%
  ggplot(aes(y = mean, x = hour)) +
  geom_smooth(aes(y = sd))

请让我知道这是否是您想要的。

答案 1 :(得分:0)

如果我的理解正确,您希望geom_smooth行表示数据框中的均值列,而错误功能区则表示sd列。

我相信这应该可以提供您想要的输出:

library(dplyr)
library(ggplot2)

df %>%
ggplot(aes(y = mean, x = hour)) +
  geom_point(alpha = 0.5) +
  geom_smooth(method = "loess", se = FALSE) +
  stat_summary(aes(y = sd), fun.data = mean_se, geom="ribbon", alpha=0.25)