我有这个数据:
# A tibble: 6 x 3
question category percent
<chr> <chr> <dbl>
1 No A 0.82
2 No C 0.8
3 No B 0.77
4 Yes B 0.23
5 Yes C 0.2
6 Yes A 0.18
然后我制作了一个堆积条形图:
data %>%
ggplot(aes(x = category, y = percent, fill = question)) +
geom_col(position = "fill") +
coord_flip()
但我真正想要的是在“是”中排列降序。这意味着类别“B”应该在顶部,“C”在中间”,“A”在底部。
如果我没有堆积图,我可以用 reorder()
来完成。但是我如何使用堆积图来做到这一点?
数据:
structure(list(question = c("No", "No", "No", "Yes", "Yes", "Yes"
), category = c("A", "C", "B", "B", "C", "A"), percent = c(0.82,
0.8, 0.77, 0.23, 0.2, 0.18)), row.names = c(NA, -6L), class = c("tbl_df",
"tbl", "data.frame"))
答案 0 :(得分:2)
arrange
数据,设置因子和绘图。
library(dplyr)
library(ggplot2)
data %>%
arrange(desc(question), percent) %>%
mutate(category = factor(category, unique(category))) %>%
ggplot(aes(x = category, y = percent, fill = question)) +
geom_col(position = "fill") +
coord_flip()
答案 1 :(得分:0)
您可以通过输入有序因子来手动重新排序类别变量。
dat$category <- factor(dat$category, levels = c('B', 'C', 'A'), ordered = T)