按因子在 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_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() )

【讨论】:

啊,谢谢。我会尝试一下,但这肯定会奏效。 @pickle rick 在您的解决方案中,有没有办法标记每个单独的图,以便您知道哪个是哪个? (换句话说,为每个添加一个标题) @Emily 当您使用第二个选项(带有循环)时,您可以简单地添加“+ ggtitle(var)”。在这种情况下,地块将获得品种名称作为标题

以上是关于按因子在 ggplot 中生成多个图的主要内容,如果未能解决你的问题,请参考以下文章

如何在highcharter中生成一个因子为y的散点图?

在 R 中生成具有相同数量节点和关系的多个随机图?

在ggplot中,使用像因子这样的数字变量来创建多个图,但是使用数字值来控制间距

如何更改按变量因子分类的ggplot的图例标题

如何在highcharter中生成因子为y的散点图?

R中按因子着色图