【问题标题】:how to plot the mean over time in ggplot2 R如何在ggplot2 R中随时间绘制平均值
【发布时间】:2017-06-22 01:17:47
【问题描述】:

我正在寻找随时间变化的网站平均时间。我的数据集称为 APRA,它有一个名为 Post_Day 的列,其中包含 POSIXct 的日期和一个名为 Visit_Time_Per_Page_(Minutes) 的列,它是一个 num 格式。

当我输入这个时:

ggplot(APRA,aes(Post_Day,mean(`Visit_Time_Per_Page_(Minutes)`)))+
  geom_line()+
  labs(title = "Time on Page over Time", x = "Date", y = "Time on Page (Minutes)")

我拿回来了:

我所追求的是随着时间的推移绘制的每日平均值。

谢谢。

数据样本:

Post_Title  Post_Day    Visit_Time_Per_Page_(Minutes)
Title 1     2016-05-15  4.7
Title 2     2016-05-15  3.8
Title 3     2016-05-15  5.3
Title 4     2016-05-16  2.9
Title 5     2016-05-17  5.0
Title 6     2017-05-17  4.3
Title 7     2017-05-17  4.7
Title 8     2017-05-17  3.0
Title 9     2016-05-18  2.9
Title 10    2016-05-18  4.0
Title 11    2016-05-19  6.1
Title 12    2016-05-19  4.7
Title 13    2016-05-19  8.0
Title 14    2016-05-19  3.3

【问题讨论】:

  • 请提供可重现的数据示例,APRA
  • 在 ggplot 的主调用中,更改为 aes(Post_Day, `Visit_Time_Per_Page_(Minutes)`)。然后,不要使用geom_line,而是使用stat_summary(fun.y=mean, geom="line")
  • @ycw 我添加了示例数据。 @eipi10 这已经奏效,但我需要将 geom_smooth() 添加到此图表中,使用您提供的最后帮助中的解决方案看起来不太正确。
  • 您的意思是您在情节代码中添加了+ geom_smooth()?如果是这样,它有什么不妥之处?如果您添加geom_smooth(),您可能应该删除线几何并可能添加+ geom_point()
  • 抱歉回复晚了,我不得不在另一个项目上工作。我添加了geom_smooth(se = F),效果很好。

标签: r ggplot2


【解决方案1】:

我通过将所有记录从2017更改为2016来更改输入数据,因为它更容易生成图作为示例。

关键是使用stat_summary函数并指定函数和geom。

# Load packages
library(dplyr)
library(ggplot2)
library(lubridate)

# Read the data
APRA <- read.table(text = "Post_Title Post_Day 'Visit_Time_Per_Page_(Minutes)'
'Title 1'    '2016-05-15'  4.7
'Title 2'     '2016-05-15'  3.8
'Title 3'     '2016-05-15'  5.3
'Title 4'     '2016-05-16'  2.9
'Title 5'     '2016-05-17'  5.0
'Title 6'    '2016-05-17'  4.3
'Title 7'     '2016-05-17'  4.7
'Title 8'     '2016-05-17'  3.0
'Title 9'     '2016-05-18'  2.9
'Title 10'    '2016-05-18'  4.0
'Title 11'    '2016-05-19'  6.1
'Title 12'    '2016-05-19'  4.7
'Title 13'    '2016-05-19'  8.0
'Title 14'    '2016-05-19'  3.3",
                 header = TRUE, stringsAsFactors = FALSE)

# Process and plot the data
APRA %>%
  mutate(Post_Day = ymd(Post_Day)) %>%
  ggplot(aes(x = Post_Day, y = Visit_Time_Per_Page_.Minutes.)) +
  geom_point() +
  # Calculate the mean based on y, set geom = line
  stat_summary(fun.y = "mean", colour = "red", size = 2, geom = "line")

【讨论】:

    猜你喜欢
    • 2017-04-25
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 2013-02-05
    • 2017-04-23
    相关资源
    最近更新 更多