2015-03-02 40 views
0

考虑下面的例子创建箱线图:如何子集R A longtable与ggplot

set.seed(1) 
tmp.data<-data.frame(group=rep(c("x","y","z"),8), 
year=rep(c(2000:2003),6), 
value=runif(24, 1, 100)) 

我可以创建一个简单的箱线图与组关系:

boxplot.example<-ggplot(data=tmp.data) 
boxplot.example.simple<-boxplot.example + 
geom_boxplot(aes(x=group,y=value)) 

# plot 
boxplot.example.simple 

不过,我想创建在同一图形中为每个组和每个年份单独绘制盒形图。

我同组函数试图从ggplot:

boxplot.example.yearly<-boxplot.example + 
geom_boxplot(aes(x=year,y=value, group=group)) 

# plot 
boxplot.example.yearly # does not work as expected 

然而,由于预期的分组没有工作。

然后我试图用splitllply这样的:

require("plyr") 

boxplot.example.yearly.2<-ggplot() + 
llply(.data=split(tmp.data,tmp.data$year),.fun=geom_boxplot, 
aes(x=year,y=value)) 

# Error: ggplot2 doesn't know how to deal with data of class uneval 

这可能是由于这不是ggplot函数中指定的数据参数的事实。

那么我怎样才能将箱形图绘制到一个图表中,并按照group和年度观测值进行分组?

回答

1

当你想为每个组和同期的图箱线图,我想你的数据集是准备好了,你可以做到以下几点:

p <- ggplot(tmp.data, aes(factor(year), fill=group, value)) 
p + geom_boxplot() 

enter image description here

+0

工作了我!非常感谢你! – joaoal 2015-03-02 14:23:07

+0

这是我的荣幸,很高兴它的作品! – 2015-03-02 14:33:09