如何在同一绘图中为各置信度点绘制A、B、C三组样本直方图?
绘制置信度对应的分组并列柱状图
首先是你提供的数据框:
df <- data.frame( confidence = c(0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1), A = c(44615, 4767, 2035, 834, 374, 186, 86, 35, 9, 4, 4), B = c(133995, 3059, 1152, 404, 164, 70, 33, 18, 2, 0, 0), C = c(37998, 2844, 1127, 472, 241, 115, 64, 33, 11, 3, 3) )
要实现目标效果,需要先将宽格式数据转换为长格式(适配ggplot2的绘图逻辑),再绘制并列柱状图:
步骤1:安装并加载所需包
如果未安装tidyr和ggplot2,先执行安装命令:
install.packages(c("tidyr", "ggplot2"))
加载包:
library(tidyr) library(ggplot2)
步骤2:转换数据格式
把宽格式数据转为长格式,提取样本类别和对应数值:
df_long <- pivot_longer(df, cols = c(A, B, C), names_to = "category", values_to = "count")
步骤3:绘制并列柱状图
使用geom_col配合position_dodge实现每个置信度位置的三个并列柱子,调整细节匹配目标效果:
ggplot(df_long, aes(x = confidence, y = count, fill = category)) + geom_col(position = position_dodge(width = 0.8), width = 0.7) + scale_x_continuous(breaks = seq(0, 1, 0.1)) + # 强制X轴显示0到1步长0.1的刻度 scale_fill_manual(values = c("A" = "#1f77b4", "B" = "#ff7f0e", "C" = "#2ca02c")) + # 自定义配色(可按需调整) labs(x = "置信度分数", y = "数量", fill = "样本类别") + theme_minimal() + theme( axis.text.x = element_text(angle = 45, hjust = 1), # X轴标签倾斜避免重叠 panel.grid.major.x = element_blank() # 移除X轴方向网格线,提升清晰度 )
关键参数说明
position_dodge(width = 0.8):确保同一置信度下的三个柱子并列不重叠scale_x_continuous:锁定X轴刻度为需求的0到1步长0.1- 自定义配色可根据目标图的视觉风格调整
内容的提问来源于stack exchange,提问作者Mohamed Aziz Hadj Nasr
相关产品推荐
相关产品推荐

