我是 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)
如我的图片所示,“ESSAI”或“PENALITE”是无序的。该图不尊重小标题的顺序。在我的小标题中,“序列”列以“ESSAI”、“PENALITE”、“ESSAI PEN”或“DROP”结尾。我希望绘图在正确的顺序(我的小标题中的顺序)似乎不是按照我的顺序排列,所以,“ESSAI”“DROP”,“PENALITE”或“ESSAI PEN”总是在右端。我希望我能理解。
我将非常感谢您的帮助!
我不明白你的数据如何排序,但你可以使用
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()