Прежде всего, благодарим ^ 13 tidyverse. Я хочу, чтобы столбцы на приведенной ниже диаграмме следовали тем же уровням факторов, переупорядоченным на forcats::fct_reorder ()
. Удивительно, но я вижу различный порядок уровней в наборе данных, когда View ()
ed, и когда они отображаются на диаграмме (см. Ниже). Диаграмма должна отображать количество неуспешных студентов до и после бонусных оценок (я хочу отсортировать столбцы по количеству не прошедших обучение до получения бонуса).
MWE
ggplot (df) +
geom_bar (aes (forcats::fct_reorder (subject, FailNo, .desc= TRUE), FailNo, fill = forcats::fct_rev (Bonus)), position = 'dodge', stat = 'identity') +
theme (axis.text.x=element_text(angle=45, vjust=1.5, hjust=1.5, size = rel (1.2)))
Вывод данных dput (df)
structure(list(subject = structure(c(1L, 2L, 5L, 6L, 3L, 7L,
4L, 9L, 10L, 8L, 12L, 11L, 1L, 2L, 5L, 6L, 3L, 7L, 4L, 9L, 10L,
8L, 12L, 11L), .Label = c("CAB_1", "DEM_1", "SSR_2", "RRG_1",
"TTP_1", "TTP_2", "IMM_1", "RRG_2", "DEM_2", "VRR_2", "PRS_2",
"COM_2", "MEB_2", "PHH_1", "PHH_2"), class = "factor"), Bonus = structure(c(2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("After", "Before"), class = "factor"),
FailNo = c(29, 28, 20, 18, 15, 13, 12, 8, 5, 4, 4, 2, 21,
16, 16, 14, 7, 10, 10, 5, 3, 4, 4, 1)), .Names = c("subject",
"Bonus", "FailNo"), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-24L))
Проблема
Согласно приведенной выше таблице, SSR_2
var должен занимать пятое место, а IMM_1
- шестое, однако на графике мы видим, что эти две переменные меняют местами свои позиции. Как в этом случае отсортировать сразу после тидиверса?
factor
сunique
уровнями для оси x.ggplot (df) + geom_bar (aes (factor(forcats::fct_reorder (subject, FailNo, .desc= TRUE),levels=unique(forcats::fct_reorder (subject, FailNo, .desc= TRUE))), FailNo, fill = forcats::fct_rev (Bonus)), position = 'dodge', stat = 'identity') + theme (axis.text.x=element_text(angle=45, vjust=1.5, hjust=1.5, size = rel (1.2)))
- person S Rivero   schedule 04.08.2017