【问题标题】:ggplot with stat_summary for mean along time represented by days带有 stat_summary 的 ggplot 表示以天为单位的平均时间
【发布时间】:2019-09-21 07:27:07
【问题描述】:

我有这些数据表示变量 Q1 随时间变化的值。 时间不是用日期来表示的,它是用一个事件后的天数来表示的。

https://www.mediafire.com/file/yfzbx67yivvvkgv/dat.xlsx/file

我正在尝试绘制 Q1along 的平均值,就像这里一样

Plotting average of multiple variables in time-series using ggplot

我正在使用此代码

 library(Hmisc)
    ggplot(dat,aes(x=days,y=Q1,colour=type,group=type)) +
      stat_summary(fun.data = "mean_cl_boot", geom = "smooth")

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    除了似乎不适用于新的ggplot2 版本的代码之外,您还有一个问题是您的数据并不真正适合这种绘图。这段代码实现了你想要做的:

    dat <- rio::import("dat.xlsx")
    
    library(ggplot2)
    library(dplyr)dat %>% 
      ggplot(aes(x = days, y = Q1, colour = type, group = type)) +
      geom_smooth(stat = 'summary', fun.data = mean_cl_boot)
    

    但是该图并没有真正告诉您任何信息,仅仅是因为您的数据中没有足够的值。大多数情况下似乎每天只有一个值,谷值快速上下跳跃,有时天之间的差距很大。

    当您将值分组到时间跨度时,您可以看到这一点。这里我使用了round(days, -2),它将四舍五入到最接近的 100(例如,756 变成 800,301 变成 300,49 变成 0):

    dat %>% 
      mutate(days = round(days, -2)) %>% 
      ggplot(aes(x = days, y = Q1, colour = type, group = type)) +
      geom_smooth(stat = 'summary', fun.data = mean_cl_boot)
    

    这应该与链接的图相同,但置信区间很大。这并不奇怪,因为如前所述,值在 1-5 之间快速交替。我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-09
      • 1970-01-01
      • 2018-08-21
      • 2021-06-29
      • 1970-01-01
      • 2022-06-29
      • 2017-03-17
      • 2015-07-03
      相关资源
      最近更新 更多