ggplot2绘制柱状图时报错Error in abs(x): non-numeric argument问题求助
错误原因
- 代码存在语法错误:
df$Sources <- as.character(df$Sources))末尾多了一个多余的右括号,该行无法正常执行,导致Sources列始终保留原始的AsIs类属性,ggplot2无法识别该类作为分类轴变量,触发数值计算相关报错。 Sources列的取值存在大量尾随空格,会导致坐标轴标签显示异常,也会干扰后续数据匹配、分组等操作。
解决方法
修正语法问题,同时清理多余空格即可正常绘图,修改后代码如下:
# 加载依赖包(未安装可先运行 install.packages(c("dplyr","ggplot2")) 安装) library(dplyr) library(ggplot2) S <- summary(object = results, k = 10, pause = FALSE) df <- S$MostRelSources df <- df %>% # 重命名带空格的列 dplyr::rename(Sources = `Sources `) %>% dplyr::mutate( # 转换类型+清理取值首尾空格,去除AsIs类属性 Sources = trimws(as.character(Sources)), # 确保Articles列为数值型 Articles = as.numeric(Articles) ) # 绘制柱状图 ggplot(df, aes(x = Sources, y = Articles)) + geom_col()
如果需要调整x轴标签显示角度避免重叠,可以在绘图代码后添加+ theme(axis.text.x = element_text(angle = 45, hjust = 1))
内容的提问来源于stack exchange,提问作者Rafa Mesa
相关产品推荐
相关产品推荐

