우선 tidyverse 에게 ^ 13 감사 합니다. 아래 차트의 막대가로 재정렬 된 동일한 요인 수준을 따르기를 원합니다 . 놀랍게도, ed가 차트에 표시 될 때와 같이 데이터 세트의 레벨 순서가 다릅니다 (아래 참조). 차트는 보너스 점수 전후의 실패한 학생 수를 보여 주어야합니다 (보너스 이전에 실패한 학생 수를 기준으로 막대를 정렬하고 싶습니다).forcats::fct_reorder ()
View ()
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는 5 위와 6 위에 있어야 IMM_1
하지만 차트에서는이 두 변수 가 위치를 바꾸는 것을 볼 수 있습니다. 이 경우 tidyverse 직후에 정렬하는 방법은 무엇입니까?
x 축 레벨 factor
과 함께 사용하십시오 unique
.
ggplot (df) +
geom_bar (aes(factor(forcats::fct_reorder
(subject, FailNo, .desc= TRUE),
levels=unique(subject)),
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)))
수정 됨 : @dotorate 댓글
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다