如何用ggplot2绘制按降序排列并显示占比的条形图
实现指定顺序的百分比条形图
以下是满足需求的完整可复现代码,包含数据处理、分类排序和绘图的全流程:
步骤1:加载依赖包
library(tidyverse)
步骤2:处理数据并指定分类顺序
先统计各分类的出现数量,计算百分比,再手动指定条形的排列顺序:
data <- chickwts %>% count(feed) %>% mutate(percent = n / sum(n) * 100) %>% # 按你要求的顺序定义分类因子的层级 mutate(feed = factor(feed, levels = c("soybean", "casein", "linseed", "sunflower", "horsebean")))
步骤3:绘制条形图
ggplot(data = data, aes(x = feed, y = percent)) + geom_bar(stat = "identity", fill = "#4285F4") + labs(x = "饲料类型", y = "出现频率(%)", title = "各饲料类型的频率分布") + theme_light()
关键说明
- 用
count()统计数量再计算百分比,比直接依赖stat(count)更灵活可控 - 通过
factor()的levels参数,能严格按照你指定的顺序排列条形 - 若需要自动按百分比降序/升序排列,可替换为
fct_reorder(feed, percent, .desc = TRUE)来替代手动指定层级
内容的提问来源于stack exchange,提问作者NJF
相关产品推荐
相关产品推荐

