You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言绘制的直方图中展示平均值、中位数与标准差

在R语言直方图中添加平均值、中位数和标准差的方法

你可以通过计算统计量、绘制标记线和添加文本标注这几步,在现有直方图中加入平均值、中位数和标准差信息。以下是具体实现方式:

单数据集的基础实现

以DBN数据集为例,先提取数据、计算统计量,再在直方图上添加标记:

# 提取目标数据列
prod_dbn <- DBN$Productivity...Productivité

# 计算统计量(na.rm = TRUE 处理缺失值)
mean_dbn <- mean(prod_dbn, na.rm = TRUE)
median_dbn <- median(prod_dbn, na.rm = TRUE)
sd_dbn <- sd(prod_dbn, na.rm = TRUE)

# 绘制基础直方图
hist(prod_dbn, main = "DBN", xlab = "Productivity")

# 添加平均值竖线(红色实线,线宽2)
abline(v = mean_dbn, col = "red", lwd = 2, lty = 1)
# 添加中位数竖线(蓝色虚线,线宽2)
abline(v = median_dbn, col = "blue", lwd = 2, lty = 2)

# 在图中添加统计量文本(位置可根据需求调整)
hist_counts <- hist(prod_dbn, plot = FALSE) # 获取直方图频数信息,避免重复绘图
text(x = max(prod_dbn)*0.8, y = max(hist_counts$counts)*0.8,
     labels = paste0("Mean: ", round(mean_dbn, 2), "\nMedian: ", round(median_dbn, 2), "\nSD: ", round(sd_dbn, 2)),
     col = "black", cex = 0.8)

批量处理多个数据集(推荐)

由于你需要绘制4个数据集的直方图,用函数封装代码可以减少重复工作:

# 定义通用绘图函数
plot_hist_with_stats <- function(data, col_name, main_title) {
  prod_data <- data[[col_name]]
  # 计算统计量
  mean_val <- mean(prod_data, na.rm = TRUE)
  median_val <- median(prod_data, na.rm = TRUE)
  sd_val <- sd(prod_data, na.rm = TRUE)
  # 绘制直方图
  hist(prod_data, main = main_title, xlab = "Productivity")
  # 添加标记线
  abline(v = mean_val, col = "red", lwd = 2, lty = 1)
  abline(v = median_val, col = "blue", lwd = 2, lty = 2)
  # 添加文本标注
  hist_info <- hist(prod_data, plot = FALSE)
  text(x = max(prod_data)*0.8, y = max(hist_info$counts)*0.8,
       labels = paste0("Mean: ", round(mean_val, 2), "\nMedian: ", round(median_val, 2), "\nSD: ", round(sd_val, 2)),
       col = "black", cex = 0.8)
}

# 调用函数绘制四个直方图
plot_hist_with_stats(PRE, "Productivity...Productivité", "PRE")
plot_hist_with_stats(DBN, "Productivity...Productivité", "DBN")
plot_hist_with_stats(DBG, "Productivity...Productivité", "DBG")
plot_hist_with_stats(POST, "Productivity...Productivité", "POST")

可选:把统计量放在标题中

如果更倾向于在标题里展示统计信息,可直接修改main参数:

prod_dbn <- DBN$Productivity...Productivité
mean_dbn <- mean(prod_dbn, na.rm = TRUE)
median_dbn <- median(prod_dbn, na.rm = TRUE)
sd_dbn <- sd(prod_dbn, na.rm = TRUE)

# 拼接带统计量的标题
main_title <- paste0("DBN\nMean: ", round(mean_dbn,2), " | Median: ", round(median_dbn,2), " | SD: ", round(sd_dbn,2))
hist(prod_dbn, main = main_title, xlab = "Productivity")

内容的提问来源于stack exchange,提问作者Richard Michaud Langis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 04:06:25