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