将几个组的标绘点与单行均值组合起来

Combine plotted points for several groups with single line of means

我有一系列时间点,每个时间点有三组。这些组的数据点被绘制为代表组均值和组误差条的点。在同一张图中,我想包括一条通过点的单线,代表所有三组组合的平均值(我以与单个数据点相同的格式将平均值添加到数据框中)。这个想法是为了表明方差是在组之间而不是在组内,同时仍然在一张图中显示总体平均值的趋势。不幸的是,我得到了所有组和总体平均值的单独一行。这是我调用的一些数据 mean_copies_all:

   Target.Name Filter Mean_copies_per_ml
1            1      A         529145.308
2            1      B         182360.807
3            1      C         341843.679
4           10      A         849011.671
5           10      B         212161.046
6           10      C         215310.068
7           11      A        1217760.052
8           11      B        1089211.559
9           11      C         601981.345
10          12      A          99735.053
11          12      B          51514.408
12          12      C          51218.250
13          13      A          48987.897
14          13      B          14574.007
15          13      C           7415.393
16          14      A          56187.722
17          14      B          27481.111
18          14      C          53496.085
19          15      A          23620.870
20          15      B          13247.077
21          15      C           7003.142
22          16      A          42031.020
23          16      B           5704.238
24          16      C           2899.576
25           2      A          60440.491
26           2      B         112070.893
27           2      C          57932.772
28           3      B         133824.150
29           3      C         138466.953
30           4      A         271841.956
31           4      B          70476.821
32           4      C         136501.090
33           5      A         557738.584
34           5      B         282025.027
35           5      C         141771.466
36           6      B         329257.875
37           6      C         328892.995
38           7      A         466721.296
39           7      B         471029.030
40           7      C         477953.408
41           8      A         263504.598
42           8      B         118359.180
43           8      C         239695.292
44           9      A         773710.137
45           9      B         781166.768
46           9      C         199823.470
47           1   mean         351116.598
48          10   mean         425494.262
49          11   mean         969650.985
50          12   mean          67489.237
51          13   mean          23659.099
52          14   mean          45721.639
53          15   mean          14623.696
54          16   mean          16878.278
55           2   mean          76814.719
56           3   mean         136145.552
57           4   mean         159606.622
58           5   mean         327178.359
59           6   mean         329075.435
60           7   mean         471901.244
61           8   mean         207186.356
62           9   mean         584900.125    

这是我的代码:

p <- ggplot(mean_copies_all,aes(y=log10(Mean_copies_per_ml),x=as.numeric(Target.Name)))
p + geom_point(aes(colour=Filter)) + xlab("Sample") + ylab("Gene Copies/mL") + geom_line(aes(colour=Filter,stat="mean"))

我尝试使用 stat_summary,但我一直收到错误提示“'what' 必须是字符串或函数。”我找不到关于此错误的太多信息,所以我坚持使用 geom_line。有没有一种简单的方法可以只绘制整体平均线?

编辑:我包含了数据并删除了有关在代码中添加错误栏的位,因为它可能不相关。

好的,我意识到我误读了你的原文 post - 我以为你想要在 Filter means...

由于您已经在数据集中准备了均值,因此非常简单:

为了清楚起见,我在 ggplot 对象之外创建了不同的数据框 - 您也可以在其中进行过滤。

mean_copies_filtered <- mean_copies_all[mean_copies_all$Filter!="mean",]
means <- mean_copies_all[mean_copies_all$Filter=="mean",]

p <- ggplot(mean_copies_filtered,aes(y=log10(Mean_copies_per_ml),x=as.numeric(Target.Name)))
p <- p + geom_point(aes(colour=Filter)) + xlab("Sample") + ylab("Gene Copies/mL")
p + geom_line(data=means,aes(a=as.numeric(Target.Name),y=log10(Mean_copies_per_ml)))

这产生: