Обе функции facet_grid() и facet_wrap() из пакета ggplot2 можно использовать для создания сетки графиков.
Вот основное различие между двумя функциями:
- Функция 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 A G 8 10
2 A G 14 5
3 A F 20 5
4 A F 22 3
5 B G 25 8
6 B G 29 6
7 B G 30 9
8 B G 31 12
Пример 1: Использование функции facet_grid()
В следующем коде показано, как использовать facet_grid() для создания сетки, которая отображает диаграмму рассеивания передач по сравнению с очками для каждой комбинации команды и позиции:
library (ggplot2)
ggplot(df, aes (assists, points)) +
geom_point() +
facet_grid(position~team)
Обратите внимание, что диаграмма рассеивания создается для каждой комбинации team и 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