Як змінити порядок фасетів у 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 розміщує діаграми розсіювання в порядку на основі значень, які з’являються першими у змінній team кадру даних.

Однак ми можемо перетворити команду на факторну змінну та використати аргумент рівнів , щоб вказати порядок, у якому команди слід розміщувати на графіку:

 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 '))) 

змінити порядок фасетів у ggplot2

Зауважте, що хмари точок тепер упорядковані відповідно до порядку, який ми вказали в аргументі рівнів : C, D, A, B.

Перевага використання цього підходу полягає в тому, що ми фактично не змінюємо основні дані.

Натомість ми лише змінюємо рівні у функції facet_grid() .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання в ggplot2:

Як змінити розмір шрифту в ggplot2
Як видалити легенду в ggplot2
Як обертати мітки осей у ggplot2

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *