R语言已获正确区间频数,如何绘制0-10范围的目标直方图?
解决R中自定义区间直方图的绘制问题
你已经精准算出了0-10全范围的区间频数,接下来只需要用这些结果生成完全匹配要求的直方图就行!因为你已经手动处理好了分组逻辑,用barplot()绘制会比原生hist()更可控,完美贴合目标样式。
完整代码示例
# 你的原始计算代码(保留不变) freq = c(1,3,2,3,5,6,3,2) score = 2:9 raw = rep(score,freq) sq = seq(0,10,2) t = table(cut(raw,breaks=sq)) # 提取频数并自定义区间标签 counts <- as.numeric(t) # 对应0-2、2-4直到8-10的完整区间标签 interval_labels <- c("0-2", "2-4", "4-6", "6-8", "8-10") # 绘制符合要求的直方图样式条形图 barplot(counts, names.arg = interval_labels, # 设置x轴的区间显示文本 space = 0, # 柱子间无空隙,模拟直方图的紧凑效果 col = "#5a86e3", # 可替换成目标图的颜色 border = "white", # 去掉柱子边框更美观 xlab = "Score Range", ylab = "Frequency", main = "Score Distribution", ylim = c(0, max(counts) + 1), # 顶部预留空间,避免最高柱子顶到图框 las = 1 # 让y轴标签横向显示,提升可读性 )
关键细节说明
- 选择
barplot()而非hist():hist()是基于原始数据自动分组,容易出现分组偏差;而你已经手动计算了精准的区间频数,barplot()能完全控制每个区间的展示逻辑。 space = 0:让柱子紧密排列,和直方图的视觉效果完全一致。- 自定义区间标签:确保x轴显示0-10的完整范围,和目标图的区间划分完全对应。
- 样式自定义:可以根据目标图调整
col(填充色)、border(边框)、main(标题)等参数,100%匹配需求。
内容的提问来源于stack exchange,提问作者Senne Verhaegen
相关产品推荐
相关产品推荐

