Как изменить порядок фасетов в ggplot2 (с примером)
Вы можете использовать следующий базовый синтаксис, чтобы указать порядок фасетов в ggplot2:
p+
facet_grid(~factor(my_variable, levels=c(' val1 ', ' val2 ', ' val3 ', ...)))
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: изменить порядок фасетов в ggplot2
Предположим, у нас есть следующий кадр данных в R:
#create data frame
df <- data. frame (team=c('A', 'A', 'B', 'B', 'C', 'C', 'D', 'D'),
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 points assists
1 to 8 10
2 to 14 5
3 B 20 5
4 B 22 3
5 C 25 8
6 C 29 6
7 D 30 9
8 D 31 12
В следующем коде показано, как использовать facet_grid() для создания сетки, отображающей диаграмму рассеяния передач и очков для каждой команды:
library (ggplot2)
#create multiple scatter plots using facet_grid
ggplot(df, aes (assists, points)) +
geom_point() +
facet_grid(.~team)
По умолчанию ggplot2 размещает диаграммы рассеяния в порядке, основанном на значениях, которые появляются первыми в переменной команды фрейма данных.
Однако мы можем преобразовать команду в факторную переменную и использовать аргумент уровней , чтобы указать порядок, в котором команды должны быть размещены на графике:
library (ggplot2)
#create multiple scatter plots using facet_grid with specific order
ggplot(df, aes (assists, points)) +
geom_point() +
facet_grid(~factor(team, levels=c(' C ', ' D ', ' A ', ' B ')))
Обратите внимание, что облака точек теперь упорядочены в соответствии с порядком, который мы указали в аргументе уровней : C, D, A, B.
Преимущество использования этого подхода заключается в том, что мы фактически не изменяем базовые данные.
Вместо этого мы меняем уровни только в функции facet_grid() .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в ggplot2:
Как изменить размер шрифта в ggplot2
Как удалить легенду в ggplot2
Как повернуть метки осей в ggplot2