使用ggplot绘制聚合数据

时间:2013-07-21 01:29:31

标签: r ggplot2 aggregate

我有这样的数据

subject<-1:208
ev<-runif(208, min=1, max=2)  
seeds<-gl(6,40,labels=c('seed1', 'seed2','seed3','seed4','seed5','seed6'),length=208)  
ngambles<-gl(2,1, labels=c('4','32'))    
trial<-rep(1:20, each= 2, length=208)  
ngambles<-rep('4','32' ,each=1, length=208)  
data<-data.frame(subject,ev,seeds,ngambles,trial)  

数据看起来像这样

subject       ev   seeds ngambles trial
      1 1.996717 seed1        4     1
      2 1.280977 seed1       32     1
      3 1.571648 seed1        4     2
      4 1.153311 seed1       32     2
      5 1.502559 seed1        4     3
      6 1.644001 seed1       32     3

我通过此命令绘制一个图表,其中rep为x轴,expected_value为y轴,每个种子和n_gambles。

qplot(trial,ev,data=data,
      facets=ngambles~seeds,xlab="Trial", ylab="Expected Value", geom="line")+
     opts(title = "Expected Value for Each Seed")

现在我想通过汇总试验等于1-5,6-10,11-15和16-20来绘制新图表。我还想绘制一个错误栏。

我不知道怎么做R 也许有人可以帮助我 提前谢谢

1 个答案:

答案 0 :(得分:2)

假设您的数据框名为df。首先,添加新的列ag,显示原始试验值属于函数cut()的区间。

df$ag<-cut(df$trial,c(1,6,11,16,21),right=FALSE)

现在有两种可能性 - 首先,使用ggplot2的stat_ ..函数聚合数据。已经定义了stat_summary()函数,然后您还应该定义stat_sum_df()函数(取自stat_summary()帮助文件)来计算多个汇总值。

stat_sum_df <- function(fun, geom="crossbar", ...) {
     stat_summary(fun.data=fun, colour="red", geom=geom, width=0.2, ...)
 }

使用stat_sum_df()和参数"mean_cl_normal"计算geom="errorbar"中使用的置信区间和stat_summary()的{​​{1}}平均值。 x值使用新列geom="line"。使用ag,您可以获得x轴的正确标签。

scale_x_discrete()

enter image description here

第二种方法是在绘制之前汇总数据,例如,使用库ggplot(df, aes(ag,ev,group=seeds))+stat_sum_df("mean_cl_normal",geom="errorbar")+ stat_summary(fun.y="mean",geom="line",color="red")+ facet_grid(ngambles~seeds)+ scale_x_discrete(labels=c("1-5","6-10","11-15","16-20")) 中的函数ddply()。同样在这种情况下,您需要在第一个示例中创建的列plyr。然后使用新数据进行绘图。

ag