R语言条形图(barplot)绘制求助:带均值、最大值、标准差及图例
R语言绘制带均值、最大值、标准差的并列条形图
没问题,我来帮你搞定这个需求!首先因为没法直接读取你提供的图片数据,我先构造一份模拟数据来演示,你可以直接把这部分替换成自己的真实数据就行。
步骤1:准备数据
咱们先创建一个包含三类分数(High_score、Medium_score、Low_score)以及对应的均值、最大值、标准差的数据框:
# 构造模拟数据,你可以把Value里的数值替换成你的真实数据 score_data <- data.frame( Score_Type = rep(c("High_score", "Medium_score", "Low_score"), each = 3), Stat_Type = rep(c("均值", "最大值", "标准差"), times = 3), Value = c(85, 98, 6.2, 72, 88, 5.1, 58, 70, 4.5) )
步骤2:用ggplot2绘制并列条形图
ggplot2是R里最常用的可视化包,语法灵活,画出来的图也美观。咱们用它来实现你要的效果:
# 先加载ggplot2包,如果没安装先运行install.packages("ggplot2") library(ggplot2) # 绘制条形图 ggplot(score_data, aes(x = Score_Type, y = Value, fill = Stat_Type)) + geom_bar(stat = "identity", position = position_dodge(width = 0.8), width = 0.7) + # position_dodge实现并列,对应你说的besides=TRUE需求 scale_fill_manual(values = c("均值" = "#2E86AB", "最大值" = "#F24C4C", "标准差" = "#F7D060")) + # 自定义三种统计指标的颜色 labs( title = "不同分数类型的统计指标对比", x = "分数类型", y = "数值", fill = "统计指标" # 设置图例标题 ) + theme_minimal() + theme( plot.title = element_text(hjust = 0.5, size = 14, face = "bold"), axis.title = element_text(size = 12), legend.position = "top" # 可以改成"right"调整图例位置 )
关键代码说明:
position = position_dodge(width = 0.8):这就是实现并列条形的核心,让均值、最大值、标准差的条形并排展示,完全对应你要的besides=TRUE效果。scale_fill_manual:自定义三种统计指标的颜色,你可以根据自己的喜好替换颜色代码。
可选:用Base R实现
如果你习惯用Base R的原生函数,也可以用barplot配合beside=TRUE来实现:
# 先把数据转换成矩阵格式 score_matrix <- matrix( score_data$Value, nrow = 3, ncol = 3, dimnames = list(c("均值", "最大值", "标准差"), c("High_score", "Medium_score", "Low_score")) ) # 绘制条形图 barplot(score_matrix, beside = TRUE, # 开启并列模式 col = c("#2E86AB", "#F24C4C", "#F7D060"), main = "不同分数类型的统计指标对比", xlab = "分数类型", ylab = "数值", legend.text = rownames(score_matrix), args.legend = list(x = "top", bty = "n") )
替换数据的时候,只要保证数据结构和模拟数据一致——每个分数类型对应三个统计值(均值、最大值、标准差),代码就能正常运行啦。
内容的提问来源于stack exchange,提问作者pinky j
相关产品推荐
相关产品推荐

