R语言ggplot调用fct_reorder()无法重排堆叠条形图列顺序求助
你当前的排序逻辑仅基于各expert.level分组内的单组计数,没有按国家的总响应数全局排序,所以达不到降序效果。你可以先根据每个国家的总响应数重定义country列的因子顺序,修改后的代码如下:
survey_data_barchart %>% dplyr::filter(!is.na(expert.level)) %>% dplyr::filter(!is.na(country)) %>% dplyr::group_by(expert.level) %>% dplyr::count(country) %>% # 取消原有分组,按国家总响应数降序重排country的因子水平 dplyr::ungroup() %>% dplyr::mutate(country = forcats::fct_reorder(country, n, .fun = sum, .desc = TRUE)) %>% ggplot(aes(x = country, y = n, fill = expert.level)) + geom_bar(stat = "identity") + coord_flip() + theme(legend.position="top", axis.text.x = element_text(size = 20, vjust = 1.3), axis.text.y = element_text(size = 15), legend.title = element_blank(), axis.ticks = element_blank(), rect = element_blank(), legend.text = element_text(size=25), axis.title.x = element_text(size=20, vjust = 0.5)) + guides(fill = guide_legend("")) + labs(x = "", y = "Responses") + scale_fill_brewer(palette = "Set2")
如果你不想额外加载forcats包,也可以把mutate行替换为以下代码,效果完全一致:
dplyr::mutate(country = reorder(country, -n, FUN = sum))
原有expert.level的填充配色逻辑完全保留,不会影响颜色区分效果。
内容的提问来源于stack exchange,提问作者Schleifer Grigorij
相关产品推荐
相关产品推荐

