按因子生成ggplot中的多个图

rid*_*994 13 r ggplot2 categorical-data

我有一个数据集,我想根据其中一列生成多个图.也就是说,我希望能够使用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))
Run Code Online (Sandbox Code Playgroud)

我想在Var2上生成Var1的两个单独的图,一个用于Variety A,第二个用于Variety B,最好是在单个命令中,但是如果有一种方法可以在不分割表的情况下进行,那也没关系.

pic*_*ick 22

您可以使用facet_gridfacet_wrap按因子分割图表.

ggplot(mydata, aes(Var1, Var2)) + geom_point() + facet_grid(~ Variety)
Run Code Online (Sandbox Code Playgroud)

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

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

  • @Emily当您使用第二个选项(带有循环)时,您可以简单地添加“+ ggtitle(var)”。在这种情况下,地块将以品种名称作为标题 (3认同)
  • @pickle rick 在你的解决方案中,有没有办法标记每个单独的图,以便你知道哪个是哪个?(换句话说,为每个添加一个标题) (2认同)