使用R的barplot绘制柱状图报错:'height' must be a vector or a matrix
解决方法
错误原因是你混用了基础R的barplot()函数和ggplot2的语法规则:barplot()是基础R原生绘图工具,不支持aes()映射和+拼接图层的写法,所以才会提示'height' must be a vector or a matrix。
下面提供两种可行的修正方案:
方案1:使用ggplot2正确语法(推荐)
ggplot2绘图必须先通过ggplot()初始化画布,再用geom_col()(针对已有数值的柱状图,区别于默认计数的geom_bar())添加柱状图层:
# 确保加载ggplot2包 library(ggplot2) ggplot(data = pdiv, aes(x = Area, y = Diversity)) + geom_col() + # 绘制基于已有数值的柱状图 theme_bw() + xlab("Area") + ylab("Simpson's Diversity score (1-D)") # 补全原代码中缺失的闭合括号
方案2:使用基础R的barplot()函数
如果想用基础R绘图,需要直接传入数值向量作为高度,并用names.arg指定x轴标签:
barplot(height = pdiv$Diversity, names.arg = pdiv$Area, # 设置x轴的分组标签 xlab = "Area", ylab = "Simpson's Diversity score (1-D)", col = "skyblue") # 可选:添加柱状图颜色
额外检查:先运行str(pdiv)确认数据结构,确保Diversity是数值型列,Area是字符/因子型列,避免数据读取错误导致的问题。
内容的提问来源于stack exchange,提问作者Ellen
相关产品推荐
相关产品推荐

