使用ggplot绘制柱状图时,调用count变量排序失败的问题求助
解决ggplot geom_bar按count降序排列的问题
你遇到的问题是因为原数据集gtd_top里并没有count列——geom_bar()是在绘图过程中临时计算的频数,直接引用count自然会报长度不匹配的错误。下面给两种直接可行的解决方法:
方法一:提前统计频数再绘图
先用dplyr的count()函数统计每个国家的出现次数,生成带count列的数据集,再用geom_col()(注意不是geom_bar())绘图:
library(dplyr) # 提前统计频数,生成count列 gtd_top_counted <- gtd_top %>% count(country_txt, name = "count") # 按count降序排列x轴 ggplot(gtd_top_counted, aes(x = reorder(country_txt, -count), y = count)) + geom_col()
geom_col()适用于已经有统计好数值的场景,和默认统计频数的geom_bar()功能区分开。
方法二:直接使用ggplot临时变量
不需要提前统计,在绘图时用..count..引用ggplot临时计算的频数,配合reorder()实现降序:
ggplot(gtd_top, aes(x = reorder(country_txt, -..count..), y = ..count..)) + geom_bar()
..count..是ggplot内部生成的临时变量,代表自动统计的元素出现次数,前面加负号是为了实现降序排列。
内容的提问来源于stack exchange,提问作者Humberto Hernandez
相关产品推荐
相关产品推荐

