按因子生成ggplot中的多个图

时间:2015-08-03 23:09:33

标签: r ggplot2

我有一个数据集,我想基于其中一列生成多个图。也就是说,我希望能够使用ggplot为每个因素制作一个单独的图。

这里有一些快速的样本数据:

Variety = as.factor(c("a","b","a","b","a","b","a","b","a","b")
Var1 = runif(10)
Var2 = runif(10)
mydata = as.data.frame(cbind(Variety,Var1,Var2))

我想在Var2上创建两个独立的Var1图,一个用于Variety A,另一个用于Variety B,最好是在单个命令中,但是如果有一个方法可以不分裂表,那也没关系。

1 个答案:

答案 0 :(得分:20)

您可以使用facet_gridfacet_wrap按要素分割图表。

ggplot(mydata, aes(Var1, Var2)) + geom_point() + facet_grid(~ Variety)

或者,在单独的图上,只需使用一个简单的循环

for (var in unique(mydata$Variety)) {
    dev.new()
    print( ggplot(mydata[mydata$Variety==var,], aes(Var1, Var2)) + geom_point() )
}