Подтвердить что ты не робот

Какая разница между facet_wrap() и facet_grid() в ggplot2?

Я читал документацию ggplot2 для обеих функций. Мне было интересно узнать, какие отличия и какая будет правильная ситуация для использования каждой функции (facet_wrap() и facet_grid()).

library(ggplot2)

p <- qplot(displ, hwy, data = mpg)
p + facet_wrap(~ cyl)

p + facet_grid(~ cyl)

Я предоставляю этот маленький пример, чтобы служить отправной точкой. Разница, похоже, сводится к тому, что сюжеты более автономны, а сетка делает один график все вместе.

4b9b3361

Ответ 1

Ответ ниже относится к случаю, когда у вас есть 2 аргумента в facet_grid() или facet_wrap().

facet_grid(x ~ y) будет отображать x*y графики, даже если некоторые графики пусты. Пример:

library(ggplot2)
g <- ggplot(mpg, aes(displ, hwy))

Есть 4 различных цилиндра и 7 различных значений класса.

g + geom_point(alpha=1/3) + facet_grid(cyl~class)

Выше показаны 4 * 7 = 28 графиков, даже если некоторые из них пусты (потому что некоторые классы не имеют соответствующих значений цилиндров, например, строки с class= "midsize" не имеют соответствующего значения facet_wrap(x ~ y)= "5") facet_wrap(x ~ y) с другой стороны, отображает только графики, имеющие фактические значения.

g + geom_point(alpha=1/3) + facet_wrap(cyl~class)

Сейчас отображается 19 графиков, по одному на каждую комбинацию цил и класса.

Ответ 2

facet_wrap(...) Строки вместе ggplots в разных кадрах (грани), основанных на одной переменной. facet_grid(...) может принимать две переменные:

p + facet_grid(cyl~class)

Вы также можете использовать третью переменную для группировки в каждой грани:

qplot(displ, hwy, data=mpg,color=factor(year)) + facet_grid(cyl~class)

показывает улучшение (или его отсутствие) в пробеге hwy и смещении # cylinders и класса.

Ответ 3

Для графиков с одной переменной вы можете использовать либо facet_grid() либо facet_wrap().

facet_wrap(~variable) вернет симметричную матрицу графиков для количества уровней variable.

facet_grid(.~variable) возвращает грани, равные уровням variable распределенным по горизонтали.

facet_grid(variable~.) возвращает грани, равные уровням variable распределенным по вертикали.