Jak zmienić kolejność aspektów w ggplot2 (z przykładem)


Możesz użyć następującej podstawowej składni, aby określić kolejność aspektów w ggplot2:

 p+
  facet_grid(~factor(my_variable, levels=c(' val1 ', ' val2 ', ' val3 ', ...)))

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: zmień kolejność aspektów w ggplot2

Załóżmy, że mamy następującą ramkę danych w 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

Poniższy kod pokazuje, jak użyć funkcji facet_grid() do utworzenia siatki wyświetlającej wykres rozrzutu asyst i punktów dla każdej drużyny:

 library (ggplot2)

#create multiple scatter plots using facet_grid
ggplot(df, aes (assists, points)) +
  geom_point() +
  facet_grid(.~team)

Domyślnie ggplot2 porządkuje wykresy rozrzutu na podstawie wartości, które pojawiają się jako pierwsze w zmiennej zespołu ramki danych.

Możemy jednak przekonwertować zespół na zmienną czynnikową i użyć argumentu poziomów , aby określić kolejność, w jakiej zespoły powinny być umieszczane na wykresie:

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

zmień kolejność aspektów w ggplot2

Należy zauważyć, że chmury punktów są teraz uporządkowane zgodnie z kolejnością określoną w argumencie poziomów : C, D, A, B.

Zaletą stosowania tego podejścia jest to, że tak naprawdę nie zmieniamy danych źródłowych.

Zamiast tego zmieniamy jedynie poziomy w funkcji facet_grid() .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w ggplot2:

Jak zmienić rozmiar czcionki w ggplot2
Jak usunąć legendę w ggplot2
Jak obracać etykiety osi w ggplot2

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *