【问题标题】:how to plot (with error bar) after "aggregate"?如何在“聚合”之后绘制(带误差线)?
【发布时间】:2019-09-23 00:47:30
【问题描述】:

我有二维数据(2 次治疗 x 3 天),目标是绘制用 2 条线表示均值和误差线的折线图。但是,当我使用“绘图”来绘制均值时,结果是 3 X 3 正方形的图形(不知道它是什么)。

数据:

 no. ,Treatment, D1,  D2,  D3
 1, A , 4 , 5 , 5
 2, A , 6 , 6 , 4
 3, A , 5 , 7 , 8
 4, B , 2 , 1 , 3
 5, B , 3 , 2 , 2
 6, B , 3 , 2 , 3

我使用aggregate 来计算均值和标准误差。但是,当我使用plot 时,结果很奇怪。

dta=read.table(file ='dta.csv', header = T, sep = ',')

dta.mean=aggregate(dta[,-1:-2], list(dta$Treatment),mean)

plot(dta.mean[1,2:4])

我预计折线图由 2 条线组成(一条是处理 A,另一条是处理 B),y 值是带有误差线的平均值。 请帮助我:(非常感谢!

image1:这是错误的结果

image2:预期的

【问题讨论】:

  • 您能添加一张您的预期和当前情节的图片吗?
  • @NelsonGon 当然,我已经编辑了内容,图片还在开头!
  • 为什么结果会是这样?谁能帮我指出编码中的错误?谢谢>

标签: r


【解决方案1】:

让我们一步一步来。希望对您有所帮助。

首先我们看看aggregate方法的结果是什么:

  Group.1       D1       D2       D3
1       A 5.000000 6.000000 5.666667
2       B 2.666667 1.666667 2.666667

然后,您对 plot 的调用包括 dta.mean[1,2:4],因此选择第 1 行和第 2 至第 4 列进行绘图(作为数据框):

  D1 D2       D3
1  5  6 5.666667

请注意,这仅包括“A”组(第 1 行)和 3 个数值变量(用于 D1、D2 和 D3)。

当您在数据框上调用 plot 时,您将获得问题中提供的散点图矩阵。这显示了 6 个散点图(D1 与 D2、D2 与 D1、D1 与 D3、D3 与 D1、D2 与 D3、D3 与 D2)。这 6 个地块中的每一个都只有一个点。例如,D1 与 D2 是 D1 = 5,D2 = 6。

这是我将采取的方法:

首先,我会melt 数据(reshape2 包):

library(reshape2)
dta.m <- melt(dta[-1], id = "Treatment")

   Treatment variable value
1          A       D1     4
2          A       D1     6
3          A       D1     5
4          B       D1     2
5          B       D1     3
6          B       D1     3
7          A       D2     5
8          A       D2     6
...

这会使您的数据采用长格式(而不是宽格式):variable 现在是 D1、D2 或 D3,value 包括这些变量的值。这对ggplot 非常有帮助和整洁。

接下来我会aggregate:

dta.mean = aggregate(value~Treatment+variable, dta.m, mean)

这应该给你这个绘图:

  Treatment variable    value
1         A       D1 5.000000
2         B       D1 2.666667
3         A       D2 6.000000
4         B       D2 1.666667
5         A       D3 5.666667
6         B       D3 2.666667

使用ggplot2

library(ggplot2)
ggplot(dta.mean, aes(x = variable, y = value, group = Treatment, col = Treatment)) +
  geom_line()

要创建错误栏,您需要再次聚合数据(类似于对均值所做的操作)并且可能使用geom_errorbar

希望对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-09
    • 2013-03-15
    • 2021-09-14
    • 2015-06-06
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    相关资源
    最近更新 更多