按因子在 ggplot 中生成多个图
Posted
技术标签:
【中文标题】按因子在 ggplot 中生成多个图【英文标题】:Generating Multiple Plots in ggplot by Factor 【发布时间】:2015-10-26 04:50:34 【问题描述】:我有一个数据集,我想根据其中一列生成多个图。也就是说,我希望能够使用 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 的两个单独的图,一个用于品种 A,第二个用于品种 B,最好在一个命令中,但如果有一种方法可以在不拆分表格的情况下做到这一点,那就是还可以。
【问题讨论】:
【参考方案1】:您可以使用facet_grid
或facet_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() )
【讨论】:
啊,谢谢。我要试一试,但这肯定行得通。 @pickle rick 在您的解决方案中,有没有办法标记每个单独的图,以便您知道哪个是哪个? (换句话说,为每个添加一个标题) @Emily 当您使用第二个选项(带有循环)时,您可以简单地添加“+ ggtitle(var)”。在这种情况下,地块将获得品种名称作为标题以上是关于按因子在 ggplot 中生成多个图的主要内容,如果未能解决你的问题,请参考以下文章