【问题标题】:Line graph from replicate data with error bars来自带有误差线的复制数据的折线图
【发布时间】:2021-01-09 17:59:13
【问题描述】:

我试图在同一个图(Media1 和 Media2)上创建一个包含 2 个变量的增长曲线。我有 3 个时间点(T1,T2 ...),每个时间点重复 3 次(R1,R2,R3)。我需要平均重复并制作带有误差线的折线图。数据示例:

Time Replicate      Media1     Media2
1       T0        R1 0.013733333 0.03770000
2       T0        R2 0.008233333 0.03690000
3       T0        R3 0.013333333 0.03760000
4       T1        R1 0.018166667 0.03680000
5       T1        R2 0.013466667 0.03570000
6       T1        R3 0.018366667 0.03700000
7       T2        R1 0.028066667 0.04420000
8       T2        R2 0.022966667 0.04400000
9       T2        R3 0.027866667 0.04420000
10      T3        R1 0.041333333 0.05536667
11      T3        R2 0.033433333 0.05476667
12      T3        R3 0.039833333 0.05446667

我已经想出了如何使用这个来平均重复:

.colMeans(df$Media1, 3, length(df$Media1) / 3)

而且我知道如何在 ggplot 中绘制它。我只是不知道如何从原始非平均数据中获取折线图上的误差线。

感谢您的帮助

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    如果您将数据重新整形为长格式,您可以使用stat = "summary" 从数据中计算相关统计信息。计算哪些统计信息取决于 fun/fun.data 参数。

    library(ggplot2)
    
    df <- read.table(text = "Time Replicate      Media1     Media2
    1       T0        R1 0.013733333 0.03770000
    2       T0        R2 0.008233333 0.03690000
    3       T0        R3 0.013333333 0.03760000
    4       T1        R1 0.018166667 0.03680000
    5       T1        R2 0.013466667 0.03570000
    6       T1        R3 0.018366667 0.03700000
    7       T2        R1 0.028066667 0.04420000
    8       T2        R2 0.022966667 0.04400000
    9       T2        R3 0.027866667 0.04420000
    10      T3        R1 0.041333333 0.05536667
    11      T3        R2 0.033433333 0.05476667
    12      T3        R3 0.039833333 0.05446667")
    
    df <- tidyr::pivot_longer(df, c("Media1", "Media2"))
    
    ggplot(df, aes(Time, value, colour = name)) +
      geom_jitter(width = 0.2) +
      geom_line(aes(group = name), stat = "summary", fun = mean) +
      geom_errorbar(stat = "summary", fun.data = function(x) {
        data.frame(ymin = mean(x) - sd(x), ymax = mean(x) + sd(x))
      }, width = 0.1)
    

    reprex package (v0.3.0) 于 2021-01-09 创建

    【讨论】:

    • 谢谢!那工作得很好。我一直在尝试使用 reshape2 来更改数据格式。我将如何删除这些点,使其只是线条和误差线?
    • 只需删除以geom_jitter 开头的行即可删除这些点。 reshape2 包是许多 tidyr 功能的先驱。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多