用单线平均值组合几组的绘图点

时间:2015-01-30 06:29:18

标签: r plot ggplot2

我有一系列时间点,每个时间点有三组。这些组的数据点被绘制为表示具有组误差条的组均值的点。在同一个图中,我希望通过表示所有三个组合的平均值的单个线来包含(我将数据帧的平均值添加到与各个数据点相同的格式)。这个想法是为了表明方差是在群体之间,而不是在群体内,而在一个图表中仍然显示整体均值的趋势。不幸的是,我为所有组和整体意味着一个单独的线。这里有一些我称之为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,但我一直收到错误说&#34;&#39;什么&#39;必须是字符串或函数。&#34;我无法找到有关此错误的更多信息,因此我坚持使用geom_line。是否有一种简单的方法来绘制整体平均线?

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

1 个答案:

答案 0 :(得分:0)

好的,我意识到我误读了你原来的帖子 - 我认为你想在过滤器意味着......

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

为了清楚起见,我在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)))

这会产生:

enter image description here