使用ggplot2绘图时遇报错:argument 'values'缺失且无默认值
解决ggplot2的"argument 'values' is missing"错误
看起来你在使用ggplot2绘制柱状图时遇到了参数错误,我来帮你拆解问题并修复:
错误原因分析
你收到的错误提示argument "values" is missing, with no default主要来自两处问题:
- 你在
scale_fill_manual()里用了单数的value参数,但ggplot2要求的是复数形式的values - 颜色值没有完整指定:代码里的
"b..."是不完整的颜色字符串,需要补充成有效的颜色(比如"blue")
另外,你的数据里存在NA值,默认情况下这些NA对应的柱子不会被绘制,如果需要显示它们,我们也可以额外处理。
修正后的完整代码
先把你的代码补全并修正参数问题:
# 定义数据 IND1 <- c(3.422 - 0.11708, -0.58419, NA, -2.40179, 0.26907, -2.30089, NA, NA) Dep <- c("D1","D2","D3","D4","D5","D6","D7","D8") dd <- data.frame(Dep, IND1) # 加载ggplot2并绘图 library(ggplot2) ggplot(dd, aes(x = Dep, y = IND1, fill = factor(IND1 > 0, exclude = NULL))) + geom_col() + scale_fill_manual( values = c("purple", "blue", "gray"), # 为负、正、NA分别指定颜色 labels = c("IND1 ≤ 0", "IND1 > 0", "NA值") # 可选:自定义图例标签 ) + labs(fill = "分组") # 可选:修改图例标题
额外说明
- 我把
fill = (IND1 > 0)改成了fill = factor(IND1 > 0, exclude = NULL),这样NA值会被单独作为一个分组,方便我们给它指定颜色 - 如果不需要显示NA对应的柱子,你可以保持原来的
fill = (IND1 > 0),只需要修正scale_fill_manual()的参数:ggplot(dd, aes(x = Dep, y = IND1, fill = (IND1 > 0))) + geom_col() + scale_fill_manual(values = c("purple", "blue")) # 仅指定负和正的颜色
这样就能正常生成柱状图啦!
内容的提问来源于stack exchange,提问作者Konstancs
相关产品推荐
相关产品推荐

