如何在R中创建以数值分组为X轴的条形图(非直方图)?
在R语言中绘制体长分组条形图
步骤1:准备数据与分组
首先用cut()函数对体长数据进行分组,明确区间和标签:
# 模拟数据集 length <- c(6,6,7,8,9,10,11,12,13,14,15,16,17,18,19,19,20,20,21,21,23,24,26,27,29,30,31,38,34,35,30,48,50) # 定义分组区间,按5厘米为间隔,左闭右开(可按需调整) groups <- cut(length, breaks = seq(5, 55, by = 5), labels = c("5-10", "10-15", "15-20", "20-25", "25-30", "30-35", "35-40", "40-45", "45-50", "50-55"), include.lowest = TRUE)
include.lowest = TRUE确保最小数值被包含在第一个分组,breaks设置覆盖所有数据的区间范围。
步骤2:统计每组频数
用table()函数统计每个分组的个体数量:
group_counts <- table(groups) # 查看统计结果 group_counts
运行后会得到各区间的计数,比如"5-10"组对应6个个体,和你描述的一致。
步骤3:绘制条形图
方法1:Base R 原生绘图
直接用barplot()生成条形图:
barplot(group_counts, main = "体长分组个体数量", xlab = "体长区间(厘米)", ylab = "个体数量", col = "skyblue", las = 1) # las=1让y轴标签横向显示,提升可读性
方法2:ggplot2 绘图(美观且灵活)
若习惯用ggplot2,先安装加载包再绘图:
# 未安装ggplot2时先运行:install.packages("ggplot2") library(ggplot2) # 将统计结果转为数据框,适配ggplot2格式 count_df <- as.data.frame(group_counts) colnames(count_df) <- c("体长区间", "数量") ggplot(count_df, aes(x = 体长区间, y = 数量)) + geom_bar(stat = "identity", fill = "skyblue") + labs(title = "体长分组个体数量", x = "体长区间(厘米)", y = "个体数量") + theme_bw() + theme(axis.text.x = element_text(angle = 45, hjust = 1)) # 旋转x轴标签避免重叠
这样就能得到以体长分组区间为X轴,分组计数为Y轴的条形图,完全区别于直方图的连续区间展示逻辑。
内容的提问来源于stack exchange,提问作者Rnoobie
相关产品推荐
相关产品推荐

