R语言中如何按类别标签为散点上色 无需合并矩阵为数据框
问题根因
R基础绘图的col参数传入数值时,颜色索引从1开始计数,你传入的0/1标签中,0属于无效索引,无法正确匹配对应颜色,最终所有散点会显示为黑色或直接报错。
实现方案
兼容原有思路的修正写法(合并为数据框)
只要修正颜色映射的逻辑,不需要调整整体代码结构:
- 直接将分类标签转为因子,自动匹配分类绘图颜色:
df = data.frame(cbind(X, y)) plot(df$X1, df$X2, col = factor(df$X3), pch = 16)
- 手动指定两类标签对应的颜色:
df = data.frame(cbind(X, y)) plot(df$X1, df$X2, col = ifelse(df$X3 == 1, "red", "blue"), pch = 16)
完全不需要合并矩阵的绘图方法
直接通过矩阵索引取列、匹配y的标签传色,全程不生成中间数据框:
- 手动指定颜色的最简写法
# X[,1] 取矩阵第一列做x轴,X[,2]取第二列做y轴,直接匹配y的标签分配颜色 plot(X[, 1], X[, 2], col = ifelse(y == 1, "red", "blue"), xlab = "X1", ylab = "X2", pch = 16)
- 调用系统默认调色板的写法
只要把y的标签值加1,将0/1转为1/2的有效颜色索引即可自动匹配系统配色:
plot(X[, 1], X[, 2], col = y + 1, pch = 16)
说明:这种方法全程仅使用原始的X、y矩阵对象,无需执行cbind拼接、转数据框的操作,绘图效果和合并数据框的写法完全一致。
内容的提问来源于stack exchange,提问作者Jane Miller
相关产品推荐
相关产品推荐

