R语言ggplot绘制散点图时多列二元分类数据颜色映射及特殊字符转义
问题解决方案
特殊字符变量名转义方法
R中引用包含特殊字符(/、空格、数字开头、中文字符等)的变量名,必须使用**反引号 ** 包裹,反引号位于键盘左上角Esc键下方。单引号/双引号是字符串的标识,不能用来指代数据框中的列,所以调用TV/RADIO列的正确写法是 `` TV/RADIO` ``。
绘图报错修复方案
你当前使用的是宽格式数据集,ggplot的颜色映射要求传入单个分类列(每一行对应一个分类值),所以需要先将宽格式转为长格式,再进行绘图。
完整可运行代码如下:
# 未安装依赖可先执行 install.packages("tidyverse") library(tidyverse) # 宽格式转长格式,提取贷款用途分类列 plot_data <- Data %>% pivot_longer( cols = c(Car, Furniture, `TV/RADIO`, House), names_to = "loan_purpose", values_to = "is_selected" ) %>% filter(is_selected == 1) # 仅保留对应贷款用途为选中状态的记录 # 绘制散点图 ggplot(plot_data, aes(x = lending_duration, y = lending_amount)) + geom_point(aes(color = loan_purpose)) + scale_color_viridis_d() # 分类变量使用离散色阶,后缀为d,连续变量使用后缀c
原代码错误梳理
- 变量名不匹配:数据集的时长、金额列名为
lending_duration、lending_amount,与代码中写的DURATION、AMOUNT不一致 - 颜色映射逻辑错误:不能直接将多个用途列传入color映射参数,必须先转换为单个分类列
- 转义方式错误:包含/的变量名需要用反引号包裹,单引号无法生效
- 色阶函数使用错误:
scale_color_viridis_c对应连续变量,分类变量需要使用scale_color_viridis_d - 语法错误:
geom_point的函数括号未闭合,缺少一个右括号
内容的提问来源于stack exchange,提问作者Skylar J
相关产品推荐
相关产品推荐

