R中facet_wrap()和facet_grid()的区别


ggplot2 包中的facet_grid()facet_wrap()函数都可以用来生成网格图。

这是两个函数之间的主要区别:

  • facet_grid()函数将为您指定的每个变量组合生成一个绘图网格,即使某些绘图是空的。
  • facet_wrap()函数只会生成具有值的变量组合的图,这意味着它不会生成任何空图

以下两个示例使用以下数据框说明了这两个函数之间的区别:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 position=c('G', 'G', 'F', 'F', 'G', 'G', 'G', 'G'),
                 points=c(8, 14, 20, 22, 25, 29, 30, 31),
                 assists=c(10, 5, 5, 3, 8, 6, 9, 12))

#view data frame
df

  team position points assists
1 GA 8 10
2 AG 14 5
3 FY 20 5
4 AF 22 3
5 BG 25 8
6 BG 29 6
7 BG 30 9
8 BG 31 12

示例1:使用facet_grid()函数

以下代码展示了如何使用facet_grid()创建一个网格,该网格显示每个球队和位置组合的助攻与得分的散点图:

 library (ggplot2)

ggplot(df, aes (assists, points)) +
  geom_point() +
  facet_grid(position~team)

请注意,即使原始数据框中不存在团队值B和位置值F的值,也会为团队位置的每个组合生成散点图:

facet_grid()的工作原理如下:它将为您指定的每个变量组合生成一个图,即使某些图是空的。

示例2:使用facet_wrap()函数

以下代码展示了如何使用facet_wrap()创建一个网格,该网格显示每个现有团队和位置组合的助攻与得分的散点图:

 library (ggplot2)

ggplot(df, aes (assists, points)) +
  geom_point() +
  facet_wrap(position~team)

请注意,散点图仅针对原始数据框中存在的团队位置组合生成。

这意味着不会为B队和位置F的组合创建绘图,因为原始数据框中不存在该特定组合的值。

这就是facet_wrap() 的工作原理:它永远不会产生空路径。

注意:有关facet_grid()facet_wrap()函数的完整指南,请参阅ggplot2 文档。

其他资源

以下教程解释了如何在 ggplot2 中执行其他常见任务:

如何更改ggplot2中的字体大小
如何删除ggplot2中的图例
如何在ggplot2中旋转轴标签

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注