R中sapply绘制iris各列直方图时标题不显示对应列名如何解决
解决方案
原代码标题统一显示为Histogram of x的原因是:传入绘图函数的是剥离了列名属性的纯数值向量,hist()默认使用参数名x生成标题,无法自动识别对应的列名。
直接替换为以下base R代码即可生成带对应列名标题的统计图,完全保留你原本的直方图+密度线的绘图效果:
f <- function(col_name, data) { x <- data[[col_name]] hist(x, freq = FALSE, main = paste0("Histogram of ", col_name) ) lines(density(x)) } # 批量绘图,invisible()用于隐藏控制台无意义的返回值 invisible(sapply(names(iris[1:4]), f, data = iris))
关键改动说明
- 调整遍历逻辑:不再直接把数值列传入函数,改为遍历列名,在函数内部提取对应列的数值,即可拿到列名生成匹配的标题
- 所有代码均使用R原生函数,无需安装额外依赖包,完全适配你使用的最新版R、RStudio on Ubuntu 20.04运行环境
- 运行后4幅图的标题会自动匹配列名,分别为
Histogram of Sepal.Length、Histogram of Sepal.Width、Histogram of Petal.Length、Histogram of Petal.Width
如果需要自定义标题格式,直接修改
hist()函数中main参数的字符串拼接规则即可。
内容的提问来源于stack exchange,提问作者SFer
相关产品推荐
相关产品推荐

