R运行ggplot时提示需为数据框/fortify可转换对象、无法识别gg/ggplot类对象报错如何解决
报错原因
- 变量复用逻辑错误:你最初执行
empd = ggplot(emp)后,empd已经是ggplot绘图对象,而非原始的员工数据框。后续你对empd$title/empd$salary/empd$emp_no的赋值操作,是在给ggplot对象新增属性,完全没有修改原始的emp数据集。 - 绘图语法错误:报错行你把已经是ggplot类型的
empd传入ggplot()的第一个参数(要求传入数据框),同时还在图层叠加逻辑里多加了empd对象,触发类型校验报错。
修复方案
- 所有数据预处理操作都针对原始数据集
emp执行,不要复用绘图对象变量存储数据 - 绘图时直接传入预处理完成的数据框,不要叠加无意义的空ggplot对象
- 额外注意:直方图
geom_histogram用于连续数值变量,如果你把salary转为因子(分类变量),后续绘图会报错,可根据你的业务需求选择保留salary为数值类型,或改用geom_bar绘制分类柱状图
正确可运行代码
# 读取并初始化数据 emp <- read.csv("employee_data.csv") emp = as.tibble(emp) # 数据预处理(针对emp数据集操作) emp$title = factor(emp$title) # 如果salary是连续薪资数值,不需要转factor,注释掉下行即可 # emp$salary = factor(emp$salary) emp$emp_no = factor(emp$emp_no) # 绘制直方图 empd = ggplot(emp, aes(x=salary)) + geom_histogram(binwidth = 5) # 输出绘图结果 empd
内容的提问来源于stack exchange,提问作者Max Aquino
相关产品推荐
相关产品推荐

