如何在ggplot的geom_line图上添加点

3

我有一个如下的数据框,想要使用geom_line生成时间序列图。这是我的数据摘要:

summary(data.t.m)
              sample    side        time    day         variable       value       
 HA2015_E10AF.bam:  1   E:69   1      :12   F:72   nc.counts:138   Min.   : 4.346  
 HA2015_E10BF.bam:  1   W:69   2      :12   S:66                   1st Qu.: 6.949  
 HA2015_E10CF.bam:  1          3      :12                          Median : 8.529  
 HA2015_E11AF.bam:  1          4      :12                          Mean   : 9.085  
 HA2015_E11AS.bam:  1          5      :12                          3rd Qu.:10.501  
 HA2015_E11BF.bam:  1          6      :12                          Max.   :23.047  
 (Other)         :132          (Other):66                                          

以下是生成线图的代码:

plt <- ggplot(data.t.m, aes(time, value, group = side, colour = side))
plt <- plt + stat_summary(fun.y = "mean", geom="line", size = 2, position=position_dodge(0.95))  
plt <- plt + stat_summary(fun.data="calc.sem", geom="errorbar")

生成的图如下所示...

time_series_plot

现在我的问题是如何在ggplot中添加与每个时间点对应的点?

1
这不就是 + geom_point() 吗?你能否使用 dput() 发布可重现的数据子集或一些随机种子数据。 - smci
我尝试使用geom_point(),但是我得到了多个点而不是单个点... - upendra
如果您无法向我们发布数据集,请将那张错误的图片发送给我们。 - smci
1个回答

6

可能是由于您的数据点被线条遮挡,而该线条设置为了size=2。将geom_point中的点大小增加可能会解决您的问题。下面是一个例子:我模拟了您时间序列的前半部分数据,并且为了方便省略了误差棒。

数据示例

df<-data.frame(time=as.factor(c(1,1,2,2,3,3,4,4,5,5)), value=as.numeric(c(7, 8, 9, 10, 10, 11, 10.5, 11.4, 10.9, 11.6)), side=as.factor(c("E","F","E","F","E","F","E","F","E","F")))

Ggplot

library(ggplot2)
p<-ggplot(df, aes(time,value, group=side, colour=side)) + geom_line(size=1)
p<-p+geom_point(size=4)
p

enter image description here


我有一个问题。每个样本有三个复制品,当我绘制它们时,每个侧面会得到三个点,并且每个时间点的两侧都会得到6个点。是否有一种函数可以计算这3个点的平均值和SEM,并将其绘制为一个点? - upendra
1
plyr软件包中的ddply函数可以用于此操作:newdf <- ddply(df, .(time, side), summarize, value = mean(value))。它按时间和方向计算平均值。可能也可以使用相同的方法来计算标准误差。 - Ruthger Righart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接