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 中执行其他常见任务: