我的情节没有保持我的小标题在 R 中的顺序

问题描述 投票:0回答:1

我是 R 新手。这是我的问题:我尝试显示橄榄球比赛序列的情节。因此,在我的小标题中,我有可视化中未遵循的特定操作顺序。下面是一个示例:

 dput(sequences)
structure(list(Equipes = c("MTB", "MTB", "MTB", "MTB", "MTB", 
"MTB", "VR", "VR", "VR", "MTB", "MTB", "VR", "MTB", "USON", "USON", 
"MTB", "USON", "MTB", "MTB", "MTB", "USON", "MTB", "USON", "USON", 
"MTB", "USON", "MTB", "USON", "MTB", "USON", "BRIVE", "MTB", 
"BRIVE", "MTB", "BRIVE", "MTB", "MTB", "BRIVE", "BRIVE", "BRIVE", 
"BRIVE", "MTB", "BRIVE", "MTB", "BRIVE", "BRIVE", "MTB", "MTB", 
"MTB", "BRIVE", "BRIVE", "BRIVE", "MTB", "BRIVE", "BRIVE", "MTB", 
"BRIVE", "MTB", "MTB", "BRIVE", "BRIVE", "MTB", "BRIVE", "MTB", 
"MTB", "VANNES", "VANNES", "VANNES", "VANNES", "VANNES", "MTB", 
"VANNES", "MTB", "VANNES", "VANNES", "MTB", "VANNES", "MTB", 
"VANNES", "MTB", "VANNES", "MTB", "VANNES", "MTB", "VANNES", 
"VANNES", "VANNES", "VANNES", "MTB", "VANNES", "MTB", "VANNES", 
"VANNES", "VANNES", "ROUEN", "MTB", "ROUEN", "ROUEN", "MTB", 
"MTB", "ROUEN", "MTB", "MTB", "MTB", "MTB", "MTB", "ROUEN", "MTB", 
"MTB", "ROUEN", "MTB", "ROUEN", "MTB", "ROUEN", "MTB", "ROUEN", 
"MTB", "ROUEN", "ROUEN", "MTB", "MTB", "ROUEN", "MTB", "ROUEN", 
"ROUEN", "MTB", "ROUEN", "ROUEN", "MTB"), Duree = c(50, 28, 22, 
2, 26, 40, 3, 46, 3, 5, 7, 60, 14, 30, 2, 17, 42, 40, 34, 23, 
12, 17, 38, 1, 13, 9, 3, 32, 4, 49, 21, 28, 7, 23, 3, 34, 3, 
37, 19, 22, 3, 35, 33, 3, 35, 12, 9, 35, 1, 38, 40, 4, 6, 10, 
3, 47, 57, 90, 2, 13, 3, 1, 14, 29, 15, 78, 22, 29, 20, 15, 2, 
2, 5, 10, 8, 85, 19, 24, 8, 1, 20, 6, 7, 1, 15, 23, 12, 10, 40, 
3, 2, 16, 26, 30, 54, 6, 49, 1, 35, 8, 28, 70, 18, 17, 10, 5, 
28, 40, 29, 2, 6, 24, 3, 25, 3, 4, 3, 41, 10, 37, 30, 10, 2, 
10, 27, 19, 18, 12, 33), Outcome = structure(c(1L, 2L, 3L, 2L, 
4L, 5L, 6L, 4L, 2L, 3L, 2L, 2L, 3L, 2L, 2L, 4L, 6L, 4L, 7L, 6L, 
5L, 4L, 1L, 8L, 2L, 6L, 2L, 3L, 5L, 3L, 6L, 5L, 6L, 6L, 5L, 3L, 
2L, 3L, 2L, 3L, 1L, 3L, 6L, 6L, 4L, 6L, 3L, 2L, 1L, 3L, 2L, 5L, 
6L, 4L, 5L, 4L, 6L, 1L, 1L, 4L, 1L, 6L, 2L, 3L, 9L, 4L, 1L, 4L, 
2L, 5L, 6L, 6L, 6L, 1L, 3L, 2L, 6L, 6L, 6L, 2L, 5L, 5L, 6L, 6L, 
3L, 1L, 1L, 2L, 6L, 6L, 6L, 8L, 2L, 3L, 6L, 5L, 4L, 5L, 3L, 6L, 
6L, 2L, 1L, 3L, 2L, 6L, 2L, 4L, 6L, 6L, 2L, 6L, 6L, 6L, 6L, 6L, 
2L, 10L, 3L, 3L, 5L, 6L, 2L, 4L, 6L, 1L, 4L, 2L, 4L), levels = c("MELEE", 
"TOUCHE", "ESSAI", "PENALITE", "INTERCEPTION", "JAP", "PENALITE ADV", 
"ESSAI PEN", "DROP", "A LA MAIN", "PENALITE RATEE", "COUP FRANC", 
"SORTIE", "JEU PIED RAPIDE", "MELLE"), class = "factor"), Journee = c(1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 
2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 
3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
5, 5), ...5 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA), Sequence = c(1, 1, 1, 2, 2, 3, 3, 3, 4, 
4, 5, 5, 5, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9, 8, 9, 9, 9, 9, 10, 
10, 11, 11, 11, 11, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 15, 
16, 16, 17, 17, 17, 18, 18, 18, 18, 19, 19, 20, 20, 20, 20, 21, 
21, 21, 21, 22, 22, 23, 23, 24, 24, 24, 24, 24, 24, 24, 25, 25, 
25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 25, 26, 
26, 27, 27, 27, 28, 28, 29, 29, 29, 29, 29, 30, 30, 30, 30, 31, 
31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 33, 33, 33, 33, 34, 
34, 34, 35, 35), Equipe = c("MTB", "MTB", "MTB", "MTB", "MTB", 
"MTB", "ADV", "ADV", "ADV", "MTB", "MTB", "ADV", "MTB", "ADV", 
"ADV", "MTB", "ADV", "MTB", "MTB", "MTB", "ADV", "MTB", "ADV", 
"ADV", "MTB", "ADV", "MTB", "ADV", "MTB", "ADV", "ADV", "MTB", 
"ADV", "MTB", "ADV", "MTB", "MTB", "ADV", "ADV", "ADV", "ADV", 
"MTB", "ADV", "MTB", "ADV", "ADV", "MTB", "MTB", "MTB", "ADV", 
"ADV", "ADV", "MTB", "ADV", "ADV", "MTB", "ADV", "MTB", "MTB", 
"ADV", "ADV", "MTB", "ADV", "MTB", "MTB", "ADV", "ADV", "ADV", 
"ADV", "ADV", "MTB", "ADV", "MTB", "ADV", "ADV", "MTB", "ADV", 
"MTB", "ADV", "MTB", "ADV", "MTB", "ADV", "MTB", "ADV", "ADV", 
"ADV", "ADV", "MTB", "ADV", "MTB", "ADV", "ADV", "ADV", "ADV", 
"MTB", "ADV", "ADV", "MTB", "MTB", "ADV", "MTB", "MTB", "MTB", 
"MTB", "MTB", "ADV", "MTB", "MTB", "ADV", "MTB", "ADV", "MTB", 
"ADV", "MTB", "ADV", "MTB", "ADV", "ADV", "MTB", "MTB", "ADV", 
"MTB", "ADV", "ADV", "MTB", "ADV", "ADV", "MTB")), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"), row.names = c(NA, -129L), groups = structure(list(
    Sequence = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 
    15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 
    30, 31, 32, 33, 34, 35), .rows = structure(list(1:3, 4:5, 
        6:8, 9:10, 11:13, 14:16, 17:18, c(19L, 20L, 21L, 22L, 
        24L), c(23L, 25L, 26L, 27L, 28L), 29:30, 31:36, 37:38, 
        39:40, 41:42, 43:45, 46:47, 48:50, 51:54, 55:56, 57:60, 
        61:64, 65:66, 67:68, 69:75, c(76L, 77L, 78L, 79L, 80L, 
        81L, 82L, 83L, 84L, 85L, 92L), c(86L, 87L, 88L, 89L, 
        90L, 91L, 93L, 94L), 95:97, 98:99, 100:104, 105:108, 
        109:119, 120L, 121:124, 125:127, 128:129), ptype = integer(0), class = c("vctrs_list_of", 
    "vctrs_vctr", "list"))), row.names = c(NA, -35L), .drop = TRUE, class = c("tbl_df", 
"tbl", "data.frame")))

我的代码:

sequences <- actions %>%
  group_by(Sequence) %>%
  filter(any(Outcome %in% c("ESSAI","ESSAI PEN", "PENALITE", "DROP"))) |> 
  mutate(Outcome = factor(Outcome, levels = unique(Outcome))) |> 
  filter(Journee <= 5)

plot <- ggplot(sequences) +
  aes(x = Sequence, y = Duree) +
  geom_col(aes(fill = Outcome),color = "black", position = "fill") +
  geom_text(aes(label = Duree, group = Outcome), position = position_fill(vjust = 0.5)) +
  coord_flip() +
  facet_wrap(vars(Journee), nrow = 5, scales = "free_y") +
  theme_minimal()
print(plot)

下面是我得到的图片。 enter image description here

如我的图片所示,“ESSAI”或“PENALITE”是无序的。该图不尊重小标题的顺序。在我的小标题中,“序列”列以“ESSAI”、“PENALITE”、“ESSAI PEN”或“DROP”结尾。我希望绘图在正确的顺序(我的小标题中的顺序)似乎不是按照我的顺序排列,所以,“ESSAI”“DROP”,“PENALITE”或“ESSAI PEN”总是在右端。我希望我能理解。

我将非常感谢您的帮助!

r ggplot2 plot
1个回答
0
投票

我不明白你的数据如何排序,但你可以使用

forcats
包中的许多函数来重新排序因子:

通过提供具有顺序的向量来手动重新排序变量

sequences |> 
  ungroup() |> 
  mutate(Outcome = forcats::fct_relevel(Outcome, c("ESSAI","ESSAI PEN", "PENALITE", "DROP"))) |> 
  ggplot() +
  aes(x = Sequence, y = Duree) +
  geom_col(aes(fill = Outcome),color = "black", position = "fill") +
  geom_text(aes(label = Duree, group = Outcome), position = position_fill(vjust = 0.5)) +
  coord_flip() +
  facet_wrap(vars(Journee), nrow = 5, scales = "free_y") +
  theme_minimal()

根据数据框中出现的顺序对变量重新排序

sequences |> 
  ungroup() |> 
  mutate(Outcome = forcats::fct_inorder(Outcome)) |> 
  ggplot() +
  aes(x = Sequence, y = Duree) +
  geom_col(aes(fill = Outcome),color = "black", position = "fill") +
  geom_text(aes(label = Duree, group = Outcome), position = position_fill(vjust = 0.5)) +
  coord_flip() +
  facet_wrap(vars(Journee), nrow = 5, scales = "free_y") +
  theme_minimal()

根据第二个变量的顺序对变量重新排序

sequences |> 
  ungroup() |> 
  mutate(Outcome = forcats::fct_reorder(Outcome, Sequence, .desc = TRUE)) |> 
  ggplot() +
  aes(x = Sequence, y = Duree) +
  geom_col(aes(fill = Outcome),color = "black", position = "fill") +
  geom_text(aes(label = Duree, group = Outcome), position = position_fill(vjust = 0.5)) +
  coord_flip() +
  facet_wrap(vars(Journee), nrow = 5, scales = "free_y") +
  theme_minimal()
© www.soinside.com 2019 - 2024. All rights reserved.